打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
django orm错误:FieldDoesNotExist: Raw query must include the primary key
http://www.chenxm.cc/article/1141.html
背景:
python3.7
django 3.1
使用django中model.object.raw(sql)触发错误提示:
django.core.exceptions.FieldDoesNotExist: Raw query must include the primary keysql语句:
SELECT ROUND(avg(flow),2) as flow FROM "detetor_index" WHEREdetetor_key in {key_li}  and flow >0and ctime BETWEEN '{start_time}' and '{end_time}'解决方法:
经过阅读源码发现,是因为django orm查询,sql语句中必须要有主键这个字段。
model_init_names, model_init_pos, annotation_fields = self.resolve_model_init_order()if self.model._meta.pk.attname not in model_init_names:    raise exceptions.FieldDoesNotExist(        'Raw query must include the primary key'    )model_cls = self.modelfields = [self.model_fields.get(c) for c in self.columns]因此解决方法比较简单,只需要添加索引主键
SELECT id,ROUND(avg(flow),2) as flow FROM "detetor_index" WHEREdetetor_key in {key_li}  and flow >0and ctime BETWEEN '{start_time}' and '{end_time}'
本文地址: http://www.chenxm.cc/article/1141.html
版权声明: 本文为原创文章,版权归  陈新明  所有,欢迎分享本文,转载请保留出处!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python 编写ORM时的重难点掌握
Python学习——面向对象之ORM
python Django 之 Model ORM inspectdb(数据库表反向生成)
一篇文章带你了解Django ORM操作(基础篇)
django ORM详解
mysql
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服