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

Другие вопросы по тегам