django初学者,有个小问题请教一下各位大神,annotate和RawSQL联用时参数传递的问题

likun1017 2020-09-06 10:24:16
model比较繁琐,写个简单的例子,求各位大神帮帮忙,谢谢了

/某产品的实体表
class Pn(models.Model):
pn_id=models.AutoField(primary_key=True)
pn_name = models.CharField(max_length=50, verbose_name="名称")
...

/产品的工期数据表
class PTime(models.Model):
pt_id=models.AutoField(primary_key=True)
pt_pn = models.ForeignKey(Pn, verbose_name="所属产品")
pt_sort = models.PositiveIntegerField( verbose_name="工序排序") /产品生产依据工序排序从小到大的顺序生产
pt_time= models.CharField(max_length=50, verbose_name="工期")
...

/产品的实时生产信息表
class PExcute(models.Model):
pe_id=models.AutoField(primary_key=True)
pe_num = models.CharField(max_length=50, verbose_name="编号")
pe_pn = models.ForeignKey(Pn, verbose_name="所属产品")
pe_step = models.ForeignKey(PTime, verbose_name="当前工序")
...

在PExcute的admin中,我想在默认获取到的queryset增加一段统计列"remaintime",意为当前执行任务剩余的工期:
queryset=queryset.annotate(remaintime=RawSQL("SELECT SUM(pt_time) FROM PTime表名 WHERE pt_sort>=%s AND pt_pn_id=s%",('pe_step__pt_sort','pe_num__pn_id')))
这里的s%没有问题,好像只能用这个。但'pe_step__pt_sort'和'pe_num__pn_id'一直没有获取到,查询的结果始终是None,这样写是不是有问题呢。怎样将queryset中每一条记录的某些外键属性的属性值作为参数传进去呢
...全文
36 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧