2016-12-29 4 views
1

Я строю веб-приложение с Джанго со следующими моделями:Получить внукам объекта с Джанго

class Business(models.Model): 
    ... 

class Branch(models.Model): 
    business = models.ForeignKey(Business) 
    ... 

class Event(models.Model): 
    branch = models.ForeignKey(Branch) 

Мои вопросы, как я могу получить все события их бизнеса (а не их ветви), и если это можно сделать в запросе БД.

Спасибо!

+0

использования Джанго-mptt – e4c5

ответ

4

Запросы Django позволяют использовать нотацию «__» для доступа к отношениям. Вы можете взять его на любую глубину и узнать больше об этом here.

Джанго предлагает мощный и интуитивно понятный способ «следовать» отношениям в поисках, принимая заботу о SQL JOIN и для вас автоматически, за кулисы. Чтобы охватить отношения, просто используйте имя поля соответствующих полей , разделенных двойными символами подчеркивания, до тех пор, пока вы не получите в нужное поле.

Любое из следующих должно работать в вашем случае:

Event.objects.filter(branch__business=<business>) 
Event.objects.filter(branch__business_id=<business-id>) 
Event.objects.filter(branch__business__id=<business-id>) 
# if business had a name field you could also use 
Event.objects.filter(branch__business__name=name-of-business) 
+0

Спасибо за редактирование @ 2ps – Bitonator