2016-07-27 2 views
1

번역본이 하나의 테이블 열에 저장된 다국어 웹 사이트. 이미 필터링 된 번역이 포함 된 템플릿에 쿼리 집합을 전달해야합니다. 언어 변수가 세션에 저장됩니다.필드 값이 설정된 쿼리에 주석 달기

class Item(models.Model): 
    name = models.CharField(max_length=128) 
    description = models.ForeignKey(Localization) 

class Localization(models.Model): 
    klingon = models.TextField(blank=True, null=True, verbose_name='klingon') 
    english = models.TextField(blank=True, null=True, verbose_name='english') 

생각 그냥 필요한 텍스트로 QS 주석 좋을 것이다, 그러나 나는 필드 값에 주석하는 방법을 찾지 못했습니다.

item = Item.objects.all().annotate(text=description.klingon) 

또 다른 방법처럼 뭔가

item.description|choose_lang:request 

하지만 템플릿이 깔끔한 것 같습니다 전에 QS 정렬과 같은 템플릿 필터를 사용하는 것입니다.

답변

7

여기에서 F() 표현식을 사용할 수 있습니다.

from django.db.models import F  
item = Item.objects.all().annotate(text=F('description__klingon')) 

문서 : https://docs.djangoproject.com/en/1.9/ref/models/expressions/#using-f-with-annotations

+0

감사합니다. 나는이 F 것들을 혼자서 시도했지만, 코드의 다른 장소에서 실수를 한 것으로 밝혀졌고 실패했을 때 나는이 F 명령어가 잘못되었다고 생각했다. 이제는 모두 정상적으로 작동한다. –