Найти - Пользователи
Полная версия: Объединение нескольких таблиц
Начало » Django » Объединение нескольких таблиц
1
Dr.Livsi
Доброе время суток!
Имеется несколько связанных между собой моделей:

class ModelA(model.Models):
...

class ModelB1(model.Models):
...
mda=ForeignKey(ModelA)
...

class ModelB2(model.Models):
mda=ForeignKey(ModelA)

class ModelC(model.Models):
mdb=ForeignKey(ModelB2)
Задача:
необходимо получить запрос, который бы объединял все 4 модели. Возможно ли осуществить такое силами django ORM или придется row sql писать?
FishHook
class ModelB1(model.Models):
...
mda=ForeignKey(ModelA)
...

class ModelB2(model.Models):
mda=ForeignKey(ModelA)
как это можно вбить в один запрос?
А если на самом деле так
class ModelA(model.Models):
...

class ModelB1(model.Models):
...
mda=ForeignKey(ModelA)
...

class ModelB2(model.Models):
mdb=ForeignKey(ModelB1)

class ModelC(model.Models):
mdc=ForeignKey(ModelB2)
То легко
queryset=ModelC.objects.get(pk=1)
print queryset.mdc.mdb.mda
Dr.Livsi
хорошо, спасибо

Еще вопрос:
есть две таблицы
ModelA(…):
create_date=models.DateField(unique=True)


ModelB(…):
create_date=models.DateField(unique=True)


Можно ли связать эти таблицы по дате с помощью django orm?
FishHook
Что значит связать? Вы хотите получить строку из таблицы А, дата которой соответствует дате некой строки из таблицы В?
Если так, то Вы ищите сложности там, где их нет
ModelA(...):
create_date=models.DateField(unique=True)
...

ModelB(...):
create_date=models.DateField(unique=True)
...
some_date_B=ModelB.objects.get(create_date=my_date).create_date
some_record_A=ModelA.objects.get(create_date=some_date_B)
Dr.Livsi
не, мне нужно получить не запись. Мне нужно получить итоговую таблицу для последующих манипуляций.
ModelA(...):
create_date=models.DateField(unique=True)
summ=models.FloatField()

ModelB(...):
create_date=models.DateField(unique=True)
summ=model.FloatField()
и получить на выходе что-то вроде такой таблицы:
create_date | modela.summ | modelb.summ
alexzander77
если делать грубо и прямо - то завести третью таблицу, содержащую только даты, а create_date в моделях сделать foreign key, или, правильнее, OneToOneField.
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