Django可以包含不同类的对象的外键

时间:2018-03-10 21:31:26

标签: python django class django-models foreign-keys

有没有办法能够使用外键来引用不同类的对象

例如,这就是我正在做的事情:

Class discussion(models.Model):
    id_discussion = models.CharField(db_column='id_Discussion', primary_key=True, max_length=100)
    id_worker =   models.ForeignKey('Worker', models.CASCADE, db_column='id_user', blank=True, null=True)
    id_director = models.ForeignKey('Director', models.CASCADE, db_column='id_user', blank=True, null=True)

Class Message(models.Model):
    #some other fields
    id_sender = models.CharField(db_column='id_Sender', max_length=100, blank=True, null=True)
    id_receiver = models.CharField(db_column='id_Receiver', max_length=100, blank=True, null=True)
    id_discussion = models.ForeignKey('discussion', models.CASCADE, db_column='id_Discussion', blank=True, null=True)

我想将id_receiver和id_sender转换为外键,我的问题是发件人可能是“Worker”类或“Director”类的对象。

1 个答案:

答案 0 :(得分:1)

是。您可以使用GenericForeignKey查看此处:

https://docs.djangoproject.com/en/2.0/ref/contrib/contenttypes/#generic-relations

注意:这可能效率很低。阅读本文以了解有关它的更多信息https://lukeplant.me.uk/blog/posts/avoid-django-genericforeignkey/