2014-01-03 3 views
2

Там есть аналогичный вопрос здесь - Raw query must include the primary keyДжанго - Сырой запрос должен включать в себя первичный ключе

Однако я убегал из устаревшей БД и, следовательно, не могу понять, что вопрос с первичным ключом.

Это мой RAW запрос -

trg = Trgjob.objects.db_manager('AdmiralDEV').raw(""" 
    SELECT jobdep_id, jm.jobmst_id, jobdep_type, (jm1.jobmst_prntname + '\' + jm1.jobmst_name) AS jobdep_jobmst, 
    jobdep_operator, jobdep_status, jobdep_joblogic, jobdep_ingroup, jobdep_dateoffset, jobdep_instoffset, 
    jobdep_canignore, jobdep_filename, jobdep_filetype, jobdep_fileextent, nodmst_id, varmst_id, jobdep_value 
    FROM Jobdep jd 
    INNER JOIN Jobmst jm ON jd.jobmst_id = jm.jobmst_id 
    INNER JOIN Jobmst jm1 ON jd.jobdep_jobmst = jm1.jobmst_id 
    WHERE jm.jobmst_id = 9878""") 

На БД работает отлично, но в Джанго я получаю отказ -

сырье запрос должен включать первичный ключ

Первичный ключ на этой модели находится «jobdep_id», как показано на models.py здесь -

class Jobdep(models.Model): 
    jobdep_id = models.IntegerField(primary_key=True) 
+0

Что такое 'Trgjob'? – sk1p

ответ

10

Попробуйте чтобы написать запрос:

"SELECT jobdep_id AS id ..." 

Возможно, это помогает.

+0

Это помогло мне взглянуть в нужное место. Отправляю свой ответ сейчас :) – whoisearth

2

Вопрос был действительно мой models.py я должен был обновить его следующим образом -

class Jobdep(models.Model): 
    jobdep_id = models.IntegerField(db_column='jobdep_id', primary_key=True) 
Смежные вопросы