Skip to main content
 首页 » 编程设计

python之django parler 创建测试对象

2024年08月22日26oomusou

我的模型具有使用 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 .