2013-11-11 3 views
0

У меня есть модель ниже, как я могу получить почтовые индексы с учетом city id?Django запрос для внешних ключей

from django.db import models 

class City(models.Model): 
    # ... 
    pass 

class Location(models.Model): 
    # ... 
    city= models.ForeignKey(City) 

class Postcode(models.Model): 
    # ... 
    location = models.ForeignKey(Location) 
    postcode = models.CharField(max_length=10) 

ответ

4

Вы можете сделать это следующим образом ::

post_codes = Postcode.objects.filter(location__city__pk = city_id) 

Вы можете прочитать на lookups that span relationships here. __ может охватывать внешние ключи, может быть любой уровень глубокий

+0

Я считаю, вы также можете использовать 'location__city_id', чтобы избежать еще одного поиска БД. [см. документы здесь] (https://docs.djangoproject.com/en/dev/topics/db/optimization/#use-foreign-key-values-directly) – Fiver

+0

@Fiver OP только упоминает 'city id'. Я согласен, что 'city_id' будет иметь смысл. – karthikr

+0

Не уверен, было ли это ясно, но я не имею в виду' id' vs 'pk', я имею в виду' location__city_id' вместо 'location__city__id' – Fiver

Смежные вопросы