django parler создает тестовые объекты
У меня есть модели, в которых есть переводимые поля с использованием Django Parler, и сейчас я пытаюсь создать объекты для модульного тестирования. Вот пример модели, которая у меня есть
class Federation(TranslatableModel):
translations = TranslatedFields(
name = models.CharField('name', max_length=50)
)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
creator = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True, related_name='federation_creator')
updater = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True, related_name='federation_updater')
def __str__(self):
return self.name;
Теперь я хочу создать объекты для тестирования на этапе настройки теста:
Federation.objects.create(...)
но я не знаю, как создавать объекты с переводимыми полями.
Как мне этого добиться?
1 ответ
Решение
Вы можете сделать это так, как указано в документации Parler:
f = Federation()
f.set_current_language('en')
f.name = 'The British'
f.set_current_language('en')
f.name = 'Les rosbifs'
f.save()
Но вы также можете сделать:
f = Federation.objects.language('en').create(
name='The British',
)
f.set_current_language('en')
f.name = 'Les rosbifs'
f.save()
это то, о чем вы спрашиваете, и оно более элегантно, особенно если у вас есть только одна языковая версия для создания.
Я обнаружил language('en')
метод здесь: https://github.com/django-parler/django-parler/blob/master/parler/managers.py