这里有一个类似的问题-Raw query must include the primary key
但是,我正在使用一个遗留数据库,因此无法找出主键的问题所在。
这是我的原始查询-
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""")
在数据库上运行良好,但在django,我得到以下失败-
原始查询必须包含主键
此模型的主键是“jobdep_id”,如这里的models.py所示-
class Jobdep(models.Model):
jobdep_id = models.IntegerField(primary_key=True)
如果使用Manager.raw(),则需要提供id.(https://docs.djangoproject.com/en/2.2/topics/db/sql/#performing-raw-sql-queries)
但是可以直接执行自定义SQL来避免这种情况。有关Django文档的更多信息 https://docs.djangoproject.com/en/2.2/topics/db/sql/#executing-custom-sql-directly
尝试将查询编写为:
也许有帮助。
问题确实是我的模型。py我必须更新如下-
相关问题 更多 >
编程相关推荐