首页 > 解决方案 > 如何在 django 中创建具有额外字段的关联实体

问题描述

我面临以下问题。

我有实体,提案用户,一个用户可以投票赞成或反对几个提案,一个提案可以有几个用户的几个投票。

提案和用户之间的这种关系是多对多的,问题是我想在这里添加一个额外的字段来指示投票是正面还是负面。

有没有办法在 Django 中使用 ManyToManyField?,或者唯一的方法是手动创建 Vote 的模型实体,如下所示:

    class Vote(models.Model):
    user = models.ForeignKey(User,related_name='voter',null=False)
    proposal = models.ForeignKey(Proposal,related_name='vote_to',null=False)
    opinion = models.BooleanField(blank=False,null=False)

如果我必须手动完成,我该怎么做才能对 Django 说主键是其他外键的组合

标签: djangodjango-modelsmany-to-many

解决方案


创建一个单独的模型 Vote 是一种更好的方法,因为投票是针对特定用户的特定提案的,因此它不能直接链接到 Proposal 模型或 User 模型。

请参阅这篇关于 Django 中的多列主键支持的文章,以及这个答案


推荐阅读