我需要像这样查询:
MyModel.objects.filter(title_de="some title")
de
里面是title_de
动态的
我不能做:
MyModel.objects.filter('title_%s' % language = "some title")
我怎样才能做到这一点?
我需要像这样查询:
MyModel.objects.filter(title_de="some title")
de
里面是title_de
动态的
我不能做:
MyModel.objects.filter('title_%s' % language = "some title")
我怎样才能做到这一点?
使用 kwargs,
kwargs = {}
title_arg = 'title_%s' % language
kwargs[title_arg] = "some title"
MyModel.objects.filter(**kwargs)
如果在您的示例中language
是当前语言,那么这将开箱即用。请参阅模型翻译文档:
它的工作原理如下:如果使用翻译字段名称(
title
),则将其更改为当前语言字段名称(title_de
或title_en
,取决于当前的活动语言)。任何以语言为后缀的名称都保持不变(因此title_en
无论当前语言是什么都不会改变)。
如果给定语言没有可用的翻译,则没有回退(参见例如this question),因此这与专门查询特定于语言的字段具有相同的效果。