【问题标题】:TypeError: '>=' not supported between instances of 'QuerySet' and 'int'TypeError:“QuerySet”和“int”实例之间不支持“>=”
【发布时间】:2020-09-07 22:16:21
【问题描述】:

我只是希望如果 escs 大于或等于 id(5) 它将转到我的 if ,否则它将转到我的 其他

studentenroll = StudentsEnrollmentRecord.objects.filter(Student_Users=args)
escs = esc.objects.filter(Education_Levels__in=studentenroll.values_list('ESC'))

    if escs >= 5:
        ....
    else:
        ....

这是我得到的错误

到目前为止,我尝试的是在我的 if 条件 if escs >= 5: 我试过这个 if escs.id >= 5:

这是错误

我错过了什么吗?

【问题讨论】:

  • escs 是一个查询集,因此将其与数字进行比较是没有意义的。您是否尝试检查查询集中是否有超过五个项目?在这种情况下,你会做if escs.count() >= 5:
  • 不,我的意思是,如果该数据的 id 大于或等于 5,则不算数。
  • filter() 返回一个查询集。您可以使用escs = esc.objects.get(...) 返回单个项目,然后检查if escs.pk >= 5。但这只有在 get() 返回单个项目时才有效。如果它返回 0 个或多个项目,那么它将引发错误。从您的询问中我无法判断这是否会发生。

标签: django


【解决方案1】:

如果要检查是否存在大于或等于5的记录,可以使用以下语句:

if esc.objects.filter(id__gte=5,Education_Levels__in=studentenroll.values_list('ESC')).exists():

【讨论】:

    【解决方案2】:

    查询集返回一个列表,因此您可以通过 for 循环解决此错误

    for ecs_obj in escs:
      # if - else condition on ecs_obj
    
    

    或者您可以使用 object.get() 方法只检索一个对象。如果仍然显示相同的错误,请更新您的问题 ecs 型号代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-03
      • 2020-11-13
      • 2021-01-15
      • 2020-06-02
      • 2021-09-27
      • 2019-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多