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)
我有 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)