У меня проблема с доступом к определенным данным в моих моделях.
У меня есть модель User
, которая передает id
модели Profile
, а ее id
- ProfileA
модель.
И когда я создаю User
, он автоматически создает Profile
.
Вот мой user_model
from django.db import models
from django.contrib.auth.models import AbstractUser
from django_countries.fields import CountryField
from .model_custom_user_manager import CustomUserManager
class User(AbstractUser):
"""auth/login-related fields"""
is_a = models.BooleanField('a status', default=False)
is_e = models.BooleanField('e status', default=False)
# objects = CustomUserManager()
def __str__(self):
return "{} {}".format(self.first_name, self.last_name)
Мой profile_model
:
from django.db import models
from django_countries.fields import CountryField
from django.contrib.auth import get_user_model
User = get_user_model()
from django.db.models.signals import post_save
from django.dispatch import receiver
class Profile(models.Model):
"""non-auth-related/cosmetic fields"""
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
birth_date = models.DateTimeField(auto_now=False, auto_now_add=False, null=True)
nationality = CountryField(null=True)
def __str__(self):
return f'{self.user.username} Profile'
"""receivers to add a Profile for newly created users"""
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
И что я пытаюсь сделать, это создать ProfileA
, когда создается Profile
И когда User
имеет is_a==True
.
Вот мой profilea_model
:
from django.db import models
from .model_profile import *
from django.db.models.signals import post_save
from django.dispatch import receiver
class ProfileA(models.Model):
profile = models.ForeignKey(Profile, null=True, on_delete=models.CASCADE, related_name='profile_a')
biography = models.CharField(max_length=200, null=True)
def __str__(self):
return "{}".format(self.profile)
@receiver(post_save, sender=Profile)
def create_profile_profile_a(sender, instance, created, **kwargs):
if created & Profile.user.is_a == True:
ProfileA.objects.create(profile=instance)
И когда я пытаюсь создать User
с почтальоном:
{
"username":"Pepe",
"password":"Yolo1234",
"first_name":"Pepe",
"last_name":"Pepito",
"email":"pepe@yolo.com",
"is_a":true,
"is_e":false
}
я получаю ошибку:
AttributeError at /users/
'ForwardOneToOneDescriptor' object has no attribute 'is_a'
I Я перепробовал много вещей, но ничего не проснулось, и с помощью DjangDocs я не могу понять.
Что я делаю не так?
Спасибо за ваши ответы!