【问题标题】:django parler create test objectsdjango parler 创建测试对象
【发布时间】:2016-08-11 11:32:01
【问题描述】:

我有使用 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(...)

但我不知道如何创建带有可翻译字段的对象。

我怎样才能做到这一点?

【问题讨论】:

    标签: python django unit-testing django-parler


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 2014-01-26
      • 2017-12-11
      • 1970-01-01
      相关资源
      最近更新 更多