在Django1.5.1中是否可以对Q对象使用动态属性?

2024-09-29 01:25:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我将django-transmeta用于翻译字段,我需要使用这些翻译字段执行一些搜索。你知道吗

假设我们有一个模型,它有一个名为translated_field的可翻译字段。你知道吗

在第一种方法中,我们可以像往常一样思考一些事情,比如:

Q(translated_field__icontains="some value")  # This fails, as `translated_field` field does not exist

第二种方法是硬编码所有可能的语言版本。E、 g.:

Q(translated_field_en__icontains="some value")  # English version
Q(translated_field_es__icontains="some value")  # Spanish version
# Add as many as available languages

第二个选项似乎真的是硬编码的,我想知道是否有一个可能的第三个选项执行如下操作:

Q(getattr("translated_field") + get_language() + "__icontains"="some value")  # pseudocode

或者更好。。。有没有使用Q对象的**kwargs选项?你知道吗

谢谢!你知道吗


Tags: django方法模型field编码valueversionas
1条回答
网友
1楼 · 发布于 2024-09-29 01:25:29

可以动态生成查找参数名称,将其用作字典键,然后在创建Q对象时使用**kwargs。你知道吗

field_name_contains = "translated_field" + get_languaage() + "__icontains")
kwargs = {field_name_contains: "some value"}
q = Q(**kwargs)

相关问题 更多 >