如何在 Django 中向 ManyToManyField 添加条目?

Posted

技术标签:

【中文标题】如何在 Django 中向 ManyToManyField 添加条目?【英文标题】:How to add an entry to ManyToManyField in Django? 【发布时间】:2015-05-13 14:19:10 【问题描述】:

我有以下型号:

class Vote(models.Model):
    cmt = models.ForeignKey(Comment)
    user = models.ForeignKey(User)
    vote_type = models.SmallIntegerField(default=0) # vote_type is +1 for upvote & -1 for downvote

class Comment(models.Model):
    uuid = models.CharField(max_length=40, default='random')
    user = models.OneToOneField(User, primary_key=True) # ForeignKey('User')
    text = models.CharField(max_length=300, null=True)
    votes = models.ManyToManyField(User, through='Vote', related_name='votes_table')

如果我没有使用 through 关键字,我可以在 Comment 对象的投票字段中添加一个元素(uuid 为 id),如下所示:Comment.objects.get(uuid=id).votes.add(some_user) 但这在这里行不通,因为我必须为comments_votes 表中的每个条目存储一个vote_type。如何做到这一点?

【问题讨论】:

【参考方案1】:

只需将Vote 实例创建为described in the docs:

Vote.objects.create(cmt=Comment.objects.get(uuid=id),
                    user=some_user, vote_type=1)

【讨论】:

为什么Vote(cmt=cmt, user=some_user, vote_type=1).save() 不起作用?

以上是关于如何在 Django 中向 ManyToManyField 添加条目?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Django中向Python路径添加位置

如何在 Django 中向多对多关系中添加字段?

如何在 Django 中向 ModelForm 添加外键字段?

如何在 Django 中向模型添加临时字段?

如何在 Django 中向 ModelForm 添加非模型字段?

如何在 django 中向 Case、When 条件添加排序