django parler 创建测试对象
django parler create test objects
我的模型具有使用 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(...)
但我不知道如何创建具有可翻译字段的对象。
我怎样才能做到这一点?
您可以按照 Parler 文档自始至终建议的方式执行此操作:
f = Federation()
f.set_current_language('en')
f.name = 'The British'
f.set_current_language('fr')
f.name = 'Les rosbifs'
f.save()
但你也可以这样做:
f = Federation.objects.language('en').create(
name='The British',
)
f.set_current_language('fr')
f.name = 'Les rosbifs'
f.save()
这就是您要问的问题,而且更优雅,尤其是当您只有一种语言版本要创建时。
我发现了 language('en')
方法 here。
我的模型具有使用 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(...)
但我不知道如何创建具有可翻译字段的对象。
我怎样才能做到这一点?
您可以按照 Parler 文档自始至终建议的方式执行此操作:
f = Federation()
f.set_current_language('en')
f.name = 'The British'
f.set_current_language('fr')
f.name = 'Les rosbifs'
f.save()
但你也可以这样做:
f = Federation.objects.language('en').create(
name='The British',
)
f.set_current_language('fr')
f.name = 'Les rosbifs'
f.save()
这就是您要问的问题,而且更优雅,尤其是当您只有一种语言版本要创建时。
我发现了 language('en')
方法 here。