0
我使用django-transmeta
來翻譯字段,我需要使用這些翻譯字段進行一些搜索。是否可以在Django 1.5.1中使用Q對象的動態屬性?
假設我們有一個名爲translated_field
的可翻譯字段的模型。
在第一種方法我們可以想到的東西,像往常一樣,如:
Q(translated_field__icontains="some value") # This fails, as `translated_field` field does not exist
的第二種方法將硬編碼的所有可能的語言版本。例如:
Q(translated_field_en__icontains="some value") # English version
Q(translated_field_es__icontains="some value") # Spanish version
# Add as many as available languages
第二種選擇似乎真的硬編碼的,我不知道abount做這樣的事情可能第三個選項:
Q(getattr("translated_field") + get_language() + "__icontains"="some value") # pseudocode
甚至更好...有有** kwargs任何選項可用Q對象?
謝謝!
謝謝!這就是我一直在尋找的!它像一個魅力。只需要注意一點,我不直接聲明var'kwargs',而是像這樣直接傳遞字典:'Q(** {field_name_contains:「some value」})'否則它會過於冗長,因爲有很多'elifs ':) – Caumons 2013-04-21 00:16:36