Форум сайта python.su
Добрый день.
Есть три модели A, B, C. Модель A связана с моделью B по ForeignKey, модель C точно также связана с B. Нужно сделать единую выборку со всеми полями из трех моделей для вывода, сортировки, фильтрации и других манипуляций. На SQL это обычный запрос с JOIN. Как это сделать через OMR?
Отредактировано gonnpkf (Апрель 26, 2013 19:41:16)
Офлайн
for b in B.objects.all(): print b # B print b.a_set.all() # A print b.c_set.all() # C
Офлайн
А как совместно все поля из всех моделей вывести в одном объекте (B.1,B.2,C.2,C.5,A.9,A.4 и т.д.)? Этот вариант как я понимаю выведет их по отдельности.
Офлайн
ORM Django делает это за Вас самостоятельно.
class Foo(models.Model) name=CharField(max_length=100) class Bar(models.Model) foo=ForeignKey(Foo) class Baz(models.Model) bar=ForeignKey(Bar) baz = Baz.objects.get(pk=10) print baz.bar.foo.name
Офлайн
FishHookу автора модель не такая
class Foo(models.Model)
name=CharField(max_length=100)
class Bar(models.Model)
foo=ForeignKey(Foo)
class Baz(models.Model)
bar=ForeignKey(Bar)
baz = Baz.objects.get(pk=10)
print baz.bar.foo.name
Офлайн
По-преженму не получается вывести все данные в одном объекте. Финты с двумя подчеркиваниями так же не проходят.
Офлайн