LINUX.ORG.RU

[django] выборка «как бы» связанных данных из БД

 


0

0

Продолжаю пилить свой первый проект на django, попутно изучая этот фреймфорк, заодно и питон по мере необходимости. Сейчас затык в следующем. Есть следующие модели

class Translation1(models.Model):
    code = models.IntegerField(primary_key=True)
    description = models.CharField()

class Translation2(models.Model):
    code = models.IntegerField(primary_key=True)
    description = models.CharField()

class TranslationN(models.Model):
    code = models.IntegerField(primary_key=True)
    description = models.CharField()

class MainDB (models.Model):
   tr1_code = models.IntegerField() #код из Translation1
   tr2_code = models.IntegerField() #из 2
   tr3_code = models.IntegerField() #из 3
   name = models.CharField()
   model = models.CharField ()
   some_field1 = models.CharField ()
   some_fieldN = models.CharField ()

мне надо вывести некоторые поля из MainDB плюс расшифровки кодов из Translation1,2...

для выборки нужных полей из mainDB прикрутил свой manager, а вот дальше вошёл в ступор. Фишка в том, что БД уже заполнена данными и менять саму базу мне нельзя. Когда всё это было на коленке сделано на PHP, то работал такой запрос:

 SELECT
A1,A2,A20,A18,A45,A4,A5,A41,A36,A38,K1,K2,A27,A25,FED.RA,FED.N1,EC.RA,EC.N1,A34
FROM C12B,RKA,C014P FED,C014P EC WHERE A34='02100' AND A38=K1 AND
A41=FED.RA AND A36=EC.RA ORDER BY A1 

c12b - это MainDB, а RKA, C014P - это Translation1,2... пока вижу для себя один выход - использовать RAW SQL...

Ответ на: комментарий от anonymous4

Какая бд, такая и модель... БД в наследство же досталась. А вот каким макаром туда прикручивать ForeignKey?

Unnamed_Hero ★★★
() автор топика
Ответ на: комментарий от Unnamed_Hero

Попробую переосмыслить более вдумчиво...

Unnamed_Hero ★★★
() автор топика

что бы было понятней:

class MainDB (models.Model):
   tr1_code = models.ForeignKey(Translation1) #код из Translation1
   tr2_code = models.ForeignKey(Translation2) #из 2
   tr3_code = models.ForeignKey(Translation3) #из 3
...

в документации все это есть (ссылку давали выше) и в данном случае raw sql не нужен.

Karmadon
()
Ответ на: комментарий от Karmadon

Я уже сам допёр, и сделал; правда пришлось от менеджеров отказаться, но всё работает так, как надо. Всем большое спасибо.

Unnamed_Hero ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.