2013-10-14 64 views
3

在django中使用泛型外鍵的抽象基類和泛型關係有什麼優缺點?在django中抽象基類與泛型關係

抽象基類隱含了一個包含子類的抽象類。這裏有一個例子:

class CommonInfo(models.Model): 
    ... 
    class Meta: 
     abstract = True 
     ordering = ['name'] 

class Student(CommonInfo): 
    ... 
    class Meta(CommonInfo.Meta): 
     db_table = 'student_info' 

通用的關係是在一個表上使用通用外鍵與對象ID的實體。這裏是一個例子:

class TaggedItem(models.Model): 
    tag = models.SlugField() 
    content_type = models.ForeignKey(ContentType) 
    object_id = models.PositiveIntegerField() 
    content_object = generic.GenericForeignKey('content_type', 'object_id') 

什麼是情況和/或什麼時候應該使用一種解決方案或其他標準?

+0

@Daniel Roseman你對此有何看法?一個或另一個是更好的方法? – Atma

回答

1

經過一番研究,我認爲抽象基類範式更符合自然關係數據庫架構。泛型關係更多的是破解和繞過參照完整性。

抽象基類是要走的路。