python - django parler 创建测试对象

标签 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;

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

 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 .

关于python - django parler 创建测试对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38895185/

相关文章:

python - 为什么 termcolor 在 Windows 控制台中输出的是控制字符而不是彩色文本?

django - 多对多字段的所有值:Django

python - Django 使用一个 python session 响应来自不同浏览器的不同请求

unit-testing - 对 Mock Object 的期望似乎没有得到满足(Moq)

visual-studio-2008 - Visual Studio 2008 专业版构建过程

asp.net-mvc-3 - MVC .NET 单元测试 : how to test arguments are sent to view from controller

python - RethinkDB,使用 map 和过滤器进行查询

python - dive into python书中关于kgp.py程序的具体疑惑

reactjs - Websocket、React + Django

python - AWS EKS - 从 pod 内部验证 Kubernetes python lib