Почему возникает (user.models.DoesNotExist: CustomUser, соответствующий запросу, не существует.)?
Я создал две модели CustomUser, наследующие AbstractUser и UserProfile, и между ними существует отношение OneToOne.
затем я выполняю следующую команду:-
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
Когда я выполняю команду createuperuser, я получаю ошибку, как показано ниже:-(модель опубликована в конце..)
models.py:-
from django.db import models
from django.contrib.auth.models import AbstractUser
from django.db.models.signals import post_save
# Create your models here.
class CustomUser(AbstractUser):
email = models.EmailField(max_length=250, null=False, unique=True)
name = models.CharField(max_length=50, null=False)
username = models.CharField(max_length=50, null=False)
password = models.CharField(max_length=15, null=False)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['name', 'username']
class UserProfile(models.Model):
user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
def get_all_polls(self):
from polls.models import PollQuestion
pass
def CreateProfile(sender, instance, **kwargs):
print("profile create too..")
user = CustomUser.objects.get(username=instance)
UserProfile.objects.create(user=user)
post_save.connect(CreateProfile, sender=CustomUser)
# following = models.ManyToManyField(CustomUser, symmetrical=False, null=True)
после этого я попытался войти на портал администратора и получил:- CustomUser matching query does not exist.
После этого я проверил базу данных, существует ли какой-либо пользователь или нет:-
>>> from user.models import CustomUser
>>> u = CustomUser.objects.get(id=1)
>>> vars(u)
{'_state': <django.db.models.base.ModelState object at 0x000001C3C5B4CCA0>, 'id': 1, 'last_login': datetime.datetime(2021, 9, 21, 6, 43, 56, 565960, tzinfo=<UTC>), 'is_superuser': True, 'first_name': '', 'last_name': '', 'is_staff': True, 'is_active': True, 'date_joined': datetime.datetime(2021, 9, 21, 6, 28, 44, 123074, tzinfo=<UTC>), 'email': 'admin@gmail.com', 'name': 'admin', 'username': 'admin', 'password': 'pbkdf2_sha256$260000$SP9TyZ6VOMIFlRwvuvmDn4$7sak8fWf7QMTPfefoPMyQpLjYk3XpumRaJ5MMxq2lH4='}
>>>
Я не могу понять самостоятельно, что я делаю неправильно, пожалуйста, помогите мне выбраться из этой ситуации.
Надеемся получить от вас ответ в ближайшее время... Заранее спасибо...
user = CustomUser.objects.get(username=instance)
имеет мало смысла.
Вы пытаетесь получить пользователя, запрашивая, равно ли его имя пользователя экземпляру (CustomUser).
Это заставит Django строчить CustomUser, так что ваш запрос будет выглядеть примерно так (если бы SQL был Python)
if username == "<CustomUser: 3>":
что, очевидно, не даст ни одного ряда.
В общем случае, вам не нужна как пользовательская модель пользователя , так и модель профиля пользователя. Может быть, переосмыслите свои модели базы данных, чтобы у вас была только пользовательская модель пользователя, и обязательно используйте настройку AUTH_USER_MODEL
для ее подключения.