【问题标题】:update_or_create with ManyToManyField使用 ManyToManyField 进行更新或创建
【发布时间】:2026-02-06 01:10:01
【问题描述】:

我有 2 个模型,如下所示:

class Subs(models.Model):
    tag = models.CharField(max_length=100)

class Users(models.Model):
    name = models.CharField(max_length=100)
    tags = models.ManyToManyField(Subs)

我需要更新标签字段 - 添加新值。 如何使用 update_or_create 方法更新用户实例?

例如:

tag_1 = Subs.object.get(pk=1)
Users.objects.update_or_create(name='test_user', tags=tag_1)

如果用户 'test_user' 不存在,则必须创建它,或者如果存在,则必须将 tag_1 添加到此用户。

【问题讨论】:

    标签: django django-models django-orm


    【解决方案1】:

    无法在update_or_create 中添加tags,因为tagsManyToManyField,因此涉及数据库查询的中间表。

    但是,您可以使用 get_or_create 分两行执行此操作:

    user = Users.objects.get_or_create(name='test_user')
    user.tags.add(tag_1)
    

    【讨论】:

    • 谢谢,我也这么想!