2013-10-13 111 views
0

我有一個稱爲Notification的抽象類。我有兩個具體的實現是NearNotification和FarNotification。在django中從抽象基類中獲取子類型

每個都有一個與它們相關的不同實體。一個是一個部門,一個是一個集團。

我想發送一封電子郵件到與NearNotification部門或FarNotifications組相關的電子郵件。

現在我的抽象Notification類的樣子:

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 
+0

[這](http://stackoverflow.com/questions/5225556/determining- django-model-instance-types-after-a-query-on-a-base-class)問題會幫助你 –

回答

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