Почему нельзя удалить пользователя в django?
Почему я не могу удалить "User"? Каждый раз, когда я получаю объект типа "User" и делаю .delete(), чтобы удалить его из базы данных, мне выскакивает сообщение, что "отношения" не существует (см. изображения ниже). ниже), я не знаю, как это исправить :/
def eliminar_pac_pag(request, pk):
user = Usuario.objects.get(pk=pk)
return render(request, "eliminar_paciente.html", {"Usuario": user})
def eliminar_paciente(request, pk):
u = Usuario.objects.get(id=pk)
if request.method == "POST":
p = Paciente.objects.get(user_id=pk)
turno = Turno.objects.filter(solicitante_id=p.pk, confirmado=True)
if not turno.exists():
u.delete()
p.delete()
messages.success(request, "Se borro al paciente exitosamente!")
return redirect("Show_users")
else:
messages.info(
request, "No se puede borrar al paciente por que tiene turnos confirmados")
return redirect("Show_users")
Эту функцию я создал, а ниже представлены мои модели.
import datetime
from django.db import models
from django.contrib.auth.models import AbstractUser
from django.contrib.auth.models import (BaseUserManager)
from django.core.exceptions import ValidationError
from django.contrib.auth.models import AbstractBaseUser
from django.conf import settings
from django.core.validators import MaxValueValidator, MinValueValidator
# Create your models here.
from abc import ABC, abstractmethod
# Cambiar para que se vea más como elde la página o create superuser
def validate_decimal(dni):
if not dni.isdecimal():
raise ValidationError(f"El dni debe ser numerico")
class CustomUserManager(BaseUserManager):
def create_user(self, dni, password, nombre_completo, fecha_nac, email, clave, **extra_fields):
if not dni:
raise ValueError("El dni es obligatorio")
if not nombre_completo:
raise ValueError("El nombre completo es obligatorio")
if not fecha_nac:
raise ValueError("La fecha de nacimiento es obligatoria")
if not email:
raise ValueError("El email es obligatorio")
if not clave:
raise ValueError("La clave es obligatoria")
email = self.normalize_email(email)
user = self.model()
user.dni = dni
user.email = email
user.nombre_completo = nombre_completo
user.fecha_nac = fecha_nac
user.clave = clave
user.set_password(password)
user.is_staff = extra_fields["is_staff"]
user.is_superuser = extra_fields["is_superuser"]
user.is_active = extra_fields["is_active"]
user.save()
def create_superuser(self, dni, password, **extra_fields):
extra_fields["is_staff"] = True
extra_fields["is_superuser"] = True
extra_fields["is_active"] = True
return self.create_user(dni, password, **extra_fields)
class Usuario (AbstractUser):
first_name = None
last_name = None
username = None
REQUIRED_FIELDS = ["nombre_completo", "fecha_nac", "email", "clave"]
objects = CustomUserManager()
# ,validators=[validate_alpha])
nombre_completo = models.CharField(max_length=50)
dni = models.CharField(max_length=15, validators=[
validate_decimal], unique=True)
fecha_nac = models.DateField()
email = models.EmailField(unique=True)
clave = models.CharField(max_length=4)
USERNAME_FIELD = 'dni'
EMAIL_FIELD = 'email'
active = models.BooleanField(default=True)
edad = models.IntegerField(default=0, validators=[
MaxValueValidator(150), MinValueValidator(18)])
tipo = models.IntegerField(
default=0) # """0=paciente; 1=vacunador; 2=admin; 3=superadmin """
indice = models.IntegerField(default=-1)
habilitado = models.BooleanField(default=False)
это изображение из базы данных