gonnpkf
Апрель 26, 2013 19:40:29
Добрый день.
Есть три модели A, B, C. Модель A связана с моделью B по ForeignKey, модель C точно также связана с B. Нужно сделать единую выборку со всеми полями из трех моделей для вывода, сортировки, фильтрации и других манипуляций. На SQL это обычный запрос с JOIN. Как это сделать через OMR?
inoks
Апрель 26, 2013 23:14:35
for b in B.objects.all():
print b # B
print b.a_set.all() # A
print b.c_set.all() # C
gonnpkf
Апрель 27, 2013 12:18:23
А как совместно все поля из всех моделей вывести в одном объекте (B.1,B.2,C.2,C.5,A.9,A.4 и т.д.)? Этот вариант как я понимаю выведет их по отдельности.
FishHook
Апрель 27, 2013 13:37:27
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
inoks
Апрель 27, 2013 15:43:14
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
у автора модель не такая
gonnpkf
Апрель 28, 2013 16:26:21
По-преженму не получается вывести все данные в одном объекте. Финты с двумя подчеркиваниями так же не проходят.