【问题标题】:Create Django object outside a view using modeltranslation使用模型翻译在视图外创建 Django 对象
【发布时间】:2013-10-01 06:51:38
【问题描述】:

我正在编写一些测试,我需要创建一些对象,但是当我尝试在 Django 视图之外创建一些对象时出现此错误

cat = Category.objects.create(catalog=c, name="Category one")

返回

TypeError: 'name_es' is an invalid keyword argument for this function

modeltranslation 0.6.1 失败,但适用于 0.3.2

name 是使用模型翻译翻译的字段。

来自文档:

单元测试使用 django.utils.translation.trans_real 函数 在视图功能之外激活和停用特定语言。

我试过了:

trans_real.activate('es')
cat = Category.objects.create(catalog=c, name="Category one")

我得到同样的错误:(

有人知道在 Django 中测试基于模型转换的模型的更好方法吗?

已编辑

到目前为止尝试了更多的东西:

cat = Category.objects.create(**{'catalog':c, 'name': 'Category one'})
TypeError: 'name_es' is an invalid keyword argument for this function

【问题讨论】:

  • 还有deactivate功能,你试过吗? deactivate()
  • 我收到与deactivate() 相同的错误
  • 您是否尝试过将属性作为 kwargs 字典传递来创建方法?

标签: python django django-modeltranslation django-1.6


【解决方案1】:

您可以通过查看文档here 来查看解决方案

如果您想创建所有语言的类别名称:

x = Category.objects.populate(True).create(name='Category one')

如果您想用特定语言创建它:

x = Category.objects.create(name_en='Category one')

这适用于 django-modeltranslation 版本 0.6+

【讨论】:

    猜你喜欢
    • 2021-10-30
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 2023-01-02
    相关资源
    最近更新 更多