Найти - Пользователи
Полная версия: Выборка из нескольких моделей. Как?
Начало » Django » Выборка из нескольких моделей. Как?
1
gonnpkf
Добрый день.
Есть три модели A, B, C. Модель A связана с моделью B по ForeignKey, модель C точно также связана с B. Нужно сделать единую выборку со всеми полями из трех моделей для вывода, сортировки, фильтрации и других манипуляций. На SQL это обычный запрос с JOIN. Как это сделать через OMR?
inoks
for b in B.objects.all():
	print b # B
	print b.a_set.all() # A
	print b.c_set.all() # C
gonnpkf
А как совместно все поля из всех моделей вывести в одном объекте (B.1,B.2,C.2,C.5,A.9,A.4 и т.д.)? Этот вариант как я понимаю выведет их по отдельности.
FishHook
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
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
По-преженму не получается вывести все данные в одном объекте. Финты с двумя подчеркиваниями так же не проходят.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB