Django hvad 查询 translatableModel [英] Django hvad query translatableModel

查看:49
本文介绍了Django hvad 查询 translatableModel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am using Hvad to make translatable models but I am getting an error trying to fetch a model.

我有两个这样的模型类:

I have two models classes like these:

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),
   )

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

I am trying to do make a query like:

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

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

I am getting the following error: To access translated fields like 'model_name' from an untranslated model, you must use a translation aware manager. For non-translatable models, you can get one using hvad.utils.get_translation_aware_manager. For translatable models, use the language() method.

以下工作完美:

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

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

So the error is when I add // toy__model_name="car" //

我做错了什么?有什么方法可以实现我想要的?

What am I doing wrong? What is the way to achieve what I want?

推荐答案

遗憾的是,目前不支持深度翻译参数.这可能会在下一次 hvad 的大改写时发生变化,但目前还没有时间表.(它是在一个开发分支上实现的,但它的问题太多,无法掌握)

Unfortunately, for now, deep translated arguments are not supported. It is something that might change for the next big rewrite of hvad, but there is no schedule for it yet. (it's implemented on a development branch but too buggy to make it to master)

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

In the meantime, a nested query should work:

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

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

If using postgresql, the performance should not change much, postgresql is clever enough to optimize this correctly.

这篇关于Django hvad 查询 translatableModel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆