我想通过模型字段在 mm 中创建_or_update
这是我的models.py
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=128)
def __str__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
def __str__(self):
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person, on_delete=models.CASCADE)
group = models.ForeignKey(Group, on_delete=models.CASCADE)
is_featured = models.BooleanField(default=False)
is_active = models.BooleanField(default=False)
在我看来.py 下面的代码工作得很好
person_obj = Person.objects.get(id=1)
group_obj = Group.objects.get(id=1)
group_obj.add(person_obj, through_defaults={'is_featured': False, 'is_active': True})
现在对于相同的 group_obj 和 person_obj 我想is_featured = True
在会员模型中更新。
我怎样才能做到这一点?我可以通过过滤会员表和更新字段来做到这一点,但我想这不是一个好习惯。我想通过更好的解决方案来做到这一点。
我试过同一行
group_obj.member.add(person_obj, through_defaults={'is_featured': True, 'is_active': True})
但它没有更新该字段。