I want to create_or_update in m-m through model field
This is my 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)
In my view.py Below code is work perfectly fine
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})
Now for same group_obj and person_obj I want to update is_featured = True
in membership model.
How can i do that? I can do it by filtering Membership table and update fields but i guess it is not a good practice. I wanted to do it by better solution.
I have tried with same line
group_obj.member.add(person_obj, through_defaults={'is_featured': True, 'is_active': True})
but it is not updating that field.