Как предлагается в большинстве Django учебных пособий, я создал собственную модель пользователя с помощью AbstractUser
, а также создал Profile
-модель с дополнительными деталями, такими как био, которое связано с User
через OneToOneField.
Теперь я начинаю писать тесты, и я не уверен, как ссылаться на модель Profile
изнутри.
test_models.py
import pytest
from mixer.backend.django import mixer
pytestmark = pytest.mark.django_db
class TestUsers:
def test_user(self):
obj = mixer.blend('player.User')
assert obj.pk == 1, 'Should save one instance of a user'
assert obj.Profile.bio is not None, 'There should be at least default bio'
Что дает мне объект `AttributeError: 'User' не имеет атрибута 'Profile'
models.py
class User(AbstractUser):
pass
class Profile(models.Model):
user = models.OneToOneField(get_user_model(), on_delete=models.CASCADE)
bio = models.CharField(max_length=130, default='No bio written yet.')
@receiver(post_save, sender=get_user_model())
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=get_user_model())
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
Как мне ссылаться профиль, который должен был быть создан с помощью сигналов в models.py для тестирования?