Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 26, 2013 19:40:29

gonnpkf
Зарегистрирован: 2013-04-25
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Выборка из нескольких моделей. Как?

Добрый день.
Есть три модели A, B, C. Модель A связана с моделью B по ForeignKey, модель C точно также связана с B. Нужно сделать единую выборку со всеми полями из трех моделей для вывода, сортировки, фильтрации и других манипуляций. На SQL это обычный запрос с JOIN. Как это сделать через OMR?

Отредактировано gonnpkf (Апрель 26, 2013 19:41:16)

Офлайн

#2 Апрель 26, 2013 23:14:35

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Выборка из нескольких моделей. Как?

for b in B.objects.all():
	print b # B
	print b.a_set.all() # A
	print b.c_set.all() # C

Офлайн

#3 Апрель 27, 2013 12:18:23

gonnpkf
Зарегистрирован: 2013-04-25
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Выборка из нескольких моделей. Как?

А как совместно все поля из всех моделей вывести в одном объекте (B.1,B.2,C.2,C.5,A.9,A.4 и т.д.)? Этот вариант как я понимаю выведет их по отдельности.

Офлайн

#4 Апрель 27, 2013 13:37:27

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Выборка из нескольких моделей. Как?

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



Офлайн

#5 Апрель 27, 2013 15:43:14

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Выборка из нескольких моделей. Как?

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
у автора модель не такая


Офлайн

#6 Апрель 28, 2013 16:26:21

gonnpkf
Зарегистрирован: 2013-04-25
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Выборка из нескольких моделей. Как?

По-преженму не получается вывести все данные в одном объекте. Финты с двумя подчеркиваниями так же не проходят.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version