AttributeError at /admin/accounts/user/1/change/ Объект 'User' не имеет атрибута 'profile'

Я создаю API. Когда я создаю нового пользователя или редактирую существующего пользователя и сохраняю, я получаю эту ошибку "AttributeError at /admin/accounts/user/1/change/ У объекта 'User' нет атрибута 'profile'"

Для ясности, у меня есть модель пользователя и модель профиля, связанные с моей моделью User отношениями "один к одному".

Вот моя модель пользователя

    artist_name = models.CharField(
        max_length=255, 
        default='artist name', 
        unique=True
        )
    slug = models.SlugField(max_length=250, null=True, blank=True)
    email = models.EmailField(max_length=300, unique=True)
    active = models.BooleanField(default=True)
    staff = models.BooleanField(default=False)
    admin = models.BooleanField(default=False)
    date_joined = models.DateTimeField(auto_now_add=True)
    last_login = models.DateTimeField(auto_now_add=True)

Моя модель профиля

class Profile(models.Model):
user = models.OneToOneField(
    User, 
    on_delete=models.CASCADE,
     related_name="user", 
     default=1
     )
first_name = models.CharField(max_length=255, blank=True, null=True)
last_name = models.CharField(max_length=255, blank=True, null=True)
country = models.CharField(max_length=500, blank=True, null=True)
gender = models.CharField(max_length = 20, blank=True, null=True)
record_label = models.CharField(max_length=255, blank=True, null=True)
image = models.FileField()

И мои сигналы

from .models import User, Profile
from django.dispatch import receiver

@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)

@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
    instance.profile.save()

Я также должен упомянуть, что у меня пока нет просмотров для моего пользователя и профиля. Но я не думаю, что это должно повлиять на работу администратора. До сих пор я искал в Интернете, но ничего не помогло.

Заранее благодарю.

Я бы посоветовал вам не создавать отдельную модель пользователя, а использовать модель пользователя по умолчанию. обратите внимание, что некоторые функции, которые вам нужны в модели профиля, на самом деле присутствуют в модели пользователя. в модели пользователя по умолчанию есть first_name, last_name, email, username, password1 и password2, но если вы хотите использовать только модель пользователя, которую вы указали, то выполните следующие шаги. так в модели профиля поля, которые вы должны указать, должны быть следующими:

from django.contrib.auth.models import User
from .models import User, Profile
from django.dispatch import receiver
from django.db.models.signals import post_save

class User(models.Model):
    artist_name = models.CharField(max_length=255, default='artist name', unique=True)
    slug = models.SlugField(max_length=250, null=True, blank=True)
    email = models.EmailField(max_length=300, unique=True)
    active = models.BooleanField(default=True)
    staff = models.BooleanField(default=False)
    admin = models.BooleanField(default=False)
    date_joined = models.DateTimeField(auto_now_add=True)
    last_login = models.DateTimeField(auto_now_add=True)


class Profile(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE)
    country = models.CharField(max_length=500, blank=True, null=True)
    gender = models.CharField(max_length = 20, blank=True, null=True)
    record_label = models.CharField(max_length=255, blank=True, null=True)
    image = models.ImageField()


@receiver(post_save, sender=User)
def create_profile(sender, instance, created, *args, **kwargs):
    if created:
        Profile.objects.create(user=instance)


@receiver(post_save, sender=User)
def save_profile(sender, created, instance, **kwargs):
    if not created:
        instance.profile.save()

Надеюсь, это поможет, и если это так, проголосуйте за этот ответ и дайте ответ.

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