使用ManyToManyField更新update_or_create

问题描述 投票:8回答:1

我有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个回答
6
投票

tags中添加update_or_create是不可能的,因为tagsManyToManyField,因此涉及数据库查询的中间表。

但是你可以使用get_or_create在两行中完成:

user = Users.objects.get_or_create(name='test_user')
user.tags.add(tag_1)
© www.soinside.com 2019 - 2024. All rights reserved.