[英]ForeignKey between Django Models abstract base classes
我有一个 Django 应用程序,我想在其中使用一组抽象基类来定义某些模型。 我想通过外键连接其中一些抽象模型。
我知道 Django 不允许models.ForeignKey抽象模型。 我在 StackOverflow 上做了一些搜索,一般的共识解决方案似乎是 - 使用GenericForeignKey 。 但是,根据我的理解,这会导致额外的数据库级SELECT调用。 我想避免这种情况,因为我的很多抽象模型都有这种关系。 下面给出一个例子:
class Person (models.Model):
name = models.CharField (max_length=256)
class Meta:
abstract = True
class Phone (models.Model):
phone_no = models.BigIntegerField ()
owner = models.ForeignKey (Person) # This is, of course, wrong. I'd like something like this.
class Meta:
abstract = True
除了关于 GenericForeignKey 的帖子,我还看到了一个关于动态模型生成的帖子。 下面给出了链接。 问题海报本身已经提供了答案。
我想问一下:
谢谢你。
我已经解决了这个问题。 正如 Willem 和 Mohit 所指出的,我错误地思考了这个问题(我来自 Cpp 世界,对 Python/Django 编程思维非常陌生)。
我最终定义了没有任何关系的抽象类,然后从这些抽象类派生的具体类实际上定义了关系。 这也符合 DRY 原则。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.