Django - Admin Area - Не могу удалить пользователя из пользователей (Пользователь, соответствующий запросу, не существует).

Я создал приложение "Пользователи". В моделях я создаю Профиль и сигналы. В админке я могу создать нового пользователя, в конце создается профиль. Когда я удаляю форму нового пользователя, профиль также удаляется из Users и все нормально. Но если я пытаюсь удалить нового пользователя из области Users, я получаю сообщение об ошибке: "DoesNotExist at /admin/auth/user/3/delete/ - User matching query does not exist". Я не знаю почему? Есть какие-нибудь предложения?

Я запустил и применил все миграции, а также удалил и создал другую базу данных, но это не решило проблему.

models.py

from django.db import models
from django.contrib.auth.models import User
from PIL import Image
from ckeditor_uploader.fields import RichTextUploadingField
# Create your models here.

class Profil(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, blank=True)
    username = models.CharField(max_length=200, blank=True, null=True)
    nume = models.CharField(max_length=200, blank=True, null=True)
    avatar = models.ImageField ( upload_to ='utilizatori/', default='utilizatori/avatar_profilearning.jpg', verbose_name='Avatar (320px * 320px)')
    departament = models.CharField(max_length=200, blank=True, null=True)
    functie = models.CharField(max_length=200, blank=True, null=True)
    email = models.EmailField(max_length=500, blank=True, null=True)
    descriere = RichTextUploadingField(external_plugin_resources=[( 'emojione', '/static/src/plugins/ckeditor_plugins/emojione/' , 'plugin.js', )], config_name='default')
    creat = models.DateTimeField(auto_now_add=True)

    #pentru a redimensiona rezolutia avatarului incarcat
    def save(self, *args, **kawrgs):
        super().save(*args, **kawrgs)

        img = Image.open(self.avatar.path)

        if img.height > 320 or img.width > 320:
            output_size = (320, 320)
            img.thumbnail(output_size)
            img.save(self.avatar.path)
    
    def __str__(self):
        return str(self.user.username)

    class Meta:
        verbose_name = 'Profil'
        verbose_name_plural = 'Profil'

signals.py

from django.contrib.auth.models import User
from .models import Profil

from django.db.models.signals import post_save, post_delete
from django.dispatch import receiver

def creareProfil(sender, instance, created, **kawrgs):

    if created:
        user = instance
        profil = Profil.objects.create(
            user=user,
            username=user.username,
            email=user.email,
            nume=user.first_name,
        )

def stergeUser(sender, instance, **kawrgs):
    user = instance.user
    user.delete()

post_save.connect(creareProfil, sender=User)
post_delete.connect(stergeUser, sender=Profil)

apps.py

from django.apps import AppConfig


class UtilizatoriConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'utilizatori'

    def ready(self):
        import utilizatori.signals

В вашей модели профиля у вас есть:

user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, blank=True)

с on_delete=models.CASCADE models.CASCADE уже удаляет экземпляр при удалении, а в вашем signals.py у вас есть:

post_delete.connect(stergeUser, sender=Profil)

Возможно, при удалении пользователя django удаляет и экземпляр Profile, вызывая сигнал post_delete.

Вы можете попробовать удалить сигнал post_delete и действие удаления будет работать нормально.

Вернуться на верх