Django не загружает фикстуры при наличии сигнала post_save
Я тестирую функцию регистрации в моем приложении Django. Когда пользователи регистрируются, пользователю по умолчанию назначается user_type
. Я использую сигнал post_save
для обработки этого сигнала.
У меня есть модель профиля, которая должна быть связана с пользователем, и под моделью профиля есть поле user_type
, которое взято из другой модели.
class UserType(models.Model):
name = models.CharField(max_length=50, blank=True)
def __str__(self):
return self.name
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
user_type = models.ForeignKey(UserType, on_delete=models.SET_NULL, null=True, blank=True)
Для автоматического назначения значения по умолчанию user_type
у меня есть сигнал:
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
user_type = UserType.objects.get(pk=1)
Profile.objects.create(
user=instance,
user_type=user_type)
Я создал приспособление из своих моделей User, Profile и UserType и в своем APITestCase поместил приспособление.
class TestUserManagement(APITestCase):
fixtures = ['fixtures/initial']
Когда я запускаю тест, кажется, что фикстуры не загружаются в тестовую базу данных.
File "/usr/src/app/fixtures/signals.py", line 15, in create_user_profile
user_type = UserType.objects.get(pk=1)
...
{model}.UserType.DoesNotExist: Problem installing fixture
'/usr/src/app/fixtures/initial.json': UserType matching query does not exist.