Отношения M2M не удаляются после очистки () - PullRequest
0 голосов
/ 27 февраля 2020

Если пользователь деактивирован, я хочу удалить все членства. Я думал, что этот код в 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, связь все еще там ...?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...