1

我正在使用 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" //

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

4

1 回答 1

0

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

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

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

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

于 2015-10-28T01:34:53.813 回答