你好。
我正在使用django-cities。
任务:选择城市时,根据当前的情况,获得备选名称之一LANGUAGE_CODE
这是类中的方法:
def get_queryset(self):
if not self.request.user.is_authenticated():
return City.objects.none()
qs = City.objects.prefetch_related('alt_names').all()
if self.q:
qs = qs.filter(alt_names__name__istartswith=self.q, alt_names__language_code=self.request.LANGUAGE_CODE)
return qs
但是,与 QuerySet 一起,我得到了一堆相关的对象。也就是说,我可以像这样以所需的语言获取城市名称:
qs[0].alt_names.filter(language_code=self.request.LANGUAGE_CODE)[0]
您也可以这样做:
City.objects.get(name='Vancouver', country__code='CA').alt_names.filter(language_code='ru')
但这里又是关于一个单独的对象。
但是,如何将此操作与所有内容相关联QuerySet?在输出中,我想获得QuerySet所需语言的城市。
但问题是__str__模型本身City返回self.name的是原始语言。
我是否正确理解几乎唯一的出路是从AlternativeName必要城市的名称中进行选择,并准确显示这些名称,并且在保存表格时已经根据这些名称重新选择城市AlternativeName?
因此,我决定
__str__在 City 模型中添加一个方法:现在这样的课程
views.py可以满足您的需求:如果有人需要它,那么这里是主应用程序的一个分支,其中已经实现了该方法。