在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')
什么情况和/或何时应该使用一种解决方案或另一种解决方案的标准?
最佳答案
经过一些研究,我认为抽象基类范式更符合自然关系数据库架构。通用关系更像是 hack 并且绕过了参照完整性。
抽象基类是必经之路。
关于mysql - Django 中的抽象基类与泛型关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19368405/