从django中的抽象基类获取子类类型

时间:2013-10-13 22:30:08

标签: django django-models abstract-class

我有一个名为Notification的抽象类。我有两个具体的实现,即NearNotification和FarNotification。

每个人都有与之相关的不同实体。一个是部门,一个是集团。

我想发送一封电子邮件给与NearNotification部门或FarNotifications集团相关联的电子邮件。

现在我的抽象通知类看起来像:

class Notification(models.Model):
    name = models.CharField(max_length=256)

    class Meta:
        abstract = True

    def send(self):
        group_email = self.group.email
        department_email = self.department.email      

根据创建的类,部门或组将填充部门或组字段。

如何有条件地对此子类进行排序以确定要使用哪个电子邮件?

这样的东西
def send(self):
     if concrete class = FarNotification:
          group_email = self.group.email
     elif if concrete class = NearNotification: 
          department_email = self.department.email

1 个答案:

答案 0 :(得分:0)

您可以使用self访问该班级的名称:

def send(self):
     if self.__class__.__name__ = "FarNotification":
          group_email = self.group.email
     elif if self.__class__.__name__ = "NearNotification": 
          department_email = self.department.email