Если пользователь деактивирован, я хочу удалить все членства. Я думал, что этот код в models.py сделает это. Но это не так, отношение все еще существует.
class User(AbstractUser):
membership_type = ManyToManyField(MembershipType, blank=True)
....
def __init__(self, *args, **kwargs):
super(User, self).__init__(*args, **kwargs)
self.old_is_active = self.is_active
def save(self, **kwargs):
# Membership is cancelled
if self.old_is_active is True and self.is_active is False:
self.membership_type.clear()
super(User, self).save()
Я также изменил его и отладил его следующим образом.
@receiver(post_save, sender=User)
def clear_membership(sender, instance, **kwargs):
if instance.old_is_active is True and instance.is_active is False:
print('clearing post_save')
print(instance.membership_type.all())
instance.membership_type.clear()
print(instance.membership_type.all())
Он выводит отношение. И после clear()
отношения исчезли. Но когда я смотрю в моем Admin GUI, связь все еще там ...?