Удаление модели пользователя, которая расширяет abstractuser
Я пытаюсь удалить объект пользователя, принадлежащий классу User, который расширяет AbstractUser. Расширяющийся класс выглядит примерно так:
class User(AbstractUser):
name = CharField("Name", blank=True, max_length=255)
def __str__(self):
return self.username
Когда я пытаюсь удалить пользователя следующим образом:
user = User.objects.get(pk=self.user_id)
user.delete()
Объект пользователя не удаляется (по крайней мере, при проверке таблицы пользователей в базе данных). Другие модели, которые имеют on_delete=models.CASCADE
к моему пользовательскому классу пользователя, удаляются, как и ожидалось, но фактический объект пользователя НЕ удаляется.
Когда я пытаюсь
user = User.objects.get(pk=self.user_id)
user.delete()
user.delete() # adding extra delete()
т.е. лишнее user.delete()
, то объект пользователя удаляется, но при этом возникает исключение ( которое не является неожиданным)
Объект пользователя не может быть удален, потому что его атрибут id установлен в None.
но объект user вместе с другими объектами, имеющими FK
отношение к классу User, удаляются (как и ожидалось). Похоже, что объект был "удален" в первый раз, когда я вызвал user.delete()
? Но я все еще могу видеть строку в таблице моего пользователя.
Не уверен, что это связано, но я вижу, что тип User для удаления <class 'django.utils.functional.SimpleLazyObject'>
не является User
классом модели.
Итак, я пытаюсь удалить объект пользователя, который расширяет класс abstractuser, но мне приходится дважды вызывать delete()
на объекте, что не нормально (я думаю), как я могу избавиться от этого?