2014-07-15 2 views
1

내 장고 프로젝트에서 모델에 외래 키인 user_id을 가진 사용자 위치를 저장하는 모델이 있습니다. 여기 외래 키를 사용하여 다른 모델의 객체에 액세스

class Points(models.Model): 
    user_id = models.ForeignKey(User) 
    lat = models.FloatField() 
    lon = models.FloatField() 

지금 나는이 같은 쿼리를 실행하려는 모델 :

Points.objects.filter(user_id=id).values_list('user_id','lat','lon') 

그러나 나는이 목록에 장고의 User 모델에서 username 필드를 원한다. 어쨌든 User.objects.get(id=id).value_list('username')과 같은 다른 쿼리를 실행 한 다음 두 목록을 조인 할 필요없이이 작업을 수행 할 수 있습니까? 나는 select_relatedprefetch_related을 겪었지만 여기에서 사용할 수 있을지 확신 할 수 없습니다.

+0

[select_related] (https://docs.djangoproject.com/en/dev/ref/models/querysets/#id4)를 사용하십시오. 이 2 가지 질문, 가능한 중복 체크 아웃 : http://stackoverflow.com/questions/2425603/how-do-i-select-from-multiple-tables-in-one-query-with-django, http : // stackoverflow .com/questions/13092268/how-do-you-join-two-tables-on-a-foreign-key-field-using-django-orm –

답변

1

한 번에 두 개의 밑줄 표기법을 사용하여 관련 필드를 가져올 수 있습니다. 당신이 useruser_id의 이름을 변경해야하지만 장고는 지금 두 가지 속성이 있음을 의미한다, 당신의 외래 키 필드에 _id를 추가 (

Points.objects.filter(user_id=id) 
       .values_list('user_id', 'lat', 'lon', 'user_id__username') 

을 :. 대신을 시도 User 개체로 평가되는, user_id, 그리고 user_id_id 숫자 ID로 평가됩니다.)

+0

감사합니다. 나는 장고가 그 자체로'_id'를 덧붙였다는 것을 몰랐다. 내가 이름을 바꿀거야. –

관련 문제