我使用的是django transmeta(在django 1.2.5中没有其他更好的方法),它在一个表中创建了几个列,比如:content_en、content_es、content_it
在实施i18n之前,我有:items = Items.objects.filter(categories__slug=slug)
现在类别.slug是国际化的,所以我有”类别:slug_en", "类别.slug_es", "category.slug\u它“等等。在
所以我想做:
^{pr2}$
但如果我这样做,无论何时我需要添加一种新的语言,我将不得不更改代码,当然我不想这样做。在
所以我做了:from django.db.models import Q
from django.utils.translation import get_language
current_lang = get_language()
var = 'Q(categories__slug_%s=slug)' % current_lang
queryset = eval(var)
items = Items.objects.filter(queryset)
但在本例中,我使用eval(),它当然是evil()的同义词,最好避免它。在
所以我在想:有没有更好的方法?在
非常感谢!在