2

我需要像这样查询:

MyModel.objects.filter(title_de="some title")

de里面是title_de动态的

我不能做:

MyModel.objects.filter('title_%s' % language = "some title")

我怎样才能做到这一点?

4

2 回答 2

8

使用 kwargs,

kwargs = {}
title_arg = 'title_%s' % language
kwargs[title_arg] = "some title"

MyModel.objects.filter(**kwargs)
于 2015-03-30T15:06:41.513 回答
2

如果在您的示例中language是当前语言,那么这将开箱即用。请参阅模型翻译文档

它的工作原理如下:如果使用翻译字段名称(title),则将其更改为当前语言字段名称(title_detitle_en,取决于当前的活动语言)。任何以语言为后缀的名称都保持不变(因此title_en无论当前语言是什么都不会改变)。

如果给定语言没有可用的翻译,则没有回退(参见例如this question),因此这与专门查询特定于语言的字段具有相同的效果。

于 2015-04-14T12:57:09.577 回答