update_or_create 与 ManyToManyField

update_or_create with ManyToManyField

我有 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 方法更新 Users 实例?

例如:

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

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

无法在 update_or_create 中添加 tags,因为 tags 是一个 ManyToManyField,因此涉及数据库查询的中间 table。

但是您可以使用 get_or_create:

分两行完成
user = Users.objects.get_or_create(name='test_user')
user.tags.add(tag_1)