【问题标题】:Django hvad query translatableModelDjango hvad 查询可翻译模型
【发布时间】:2015-10-26 19:38:47
【问题描述】:

我正在使用 Hvad 制作可翻译模型,但尝试获取模型时出错。

我有两个这样的模型类:

class Boy(TranslatableModel):
  age = models.PositiveSmallIntegerField()
  toy = models.ForeignKey(Toy)

  translations = TranslatedFields(
    name = models.CharField(max_length=60),
 ) 


class Toy(TranslatableModel):
   price = models.PositiveSmallIntegerField()

   translations = TranslatedFields(
    model_name = models.CharField(max_length=60),
   )

我正在尝试进行如下查询:

 Boy = Boy.objects.language('en').filter(name="john", toy__model_name="car")

我收到以下错误: 要从未翻译的模型访问已翻译的字段,如“model_name”,您必须使用翻译感知管理器。对于不可翻译的模型,您可以使用 hvad.utils.get_translation_aware_manager 获得一个。 对于可翻译模型,请使用 language() 方法。

以下工作完美:

 Boy = Boy.objects.language('en').filter(name="john")

所以错误是当我添加 // toy__model_name="car" //

我做错了什么?实现我想要的方法是什么?

【问题讨论】:

    标签: python django multilingual django-hvad


    【解决方案1】:

    不幸的是,目前不支持深度翻译的参数。对于 hvad 的下一次大改写,这可能会有所改变,但目前还没有时间表。 (它是在一个开发分支上实现的,但由于漏洞太大而无法掌握)

    与此同时,嵌套查询应该可以工作:

    Boy = Boy.objects.language('en').filter(name="john", toy__in=Toy.objects.language('en').filter(model_name="car"))
    

    如果使用 postgresql,性能应该不会有太大变化,postgresql 足够聪明,可以正确优化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-09
      • 1970-01-01
      • 2013-09-19
      • 1970-01-01
      • 1970-01-01
      • 2023-01-12
      • 2015-06-03
      • 2021-11-26
      相关资源
      最近更新 更多