django parler创建测试对象

时间:2016-08-11 11:32:01

标签: python django unit-testing 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;

现在我想在测试用例的setUp阶段创建用于测试的对象:

 Federation.objects.create(...)

但我不知道如何使用可翻译字段创建对象。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以按照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#L34-L39