Python 使用QuerySet的Django子查询

Python 使用QuerySet的Django子查询,python,database,django,orm,Python,Database,Django,Orm,是否可以使用另一个查询集对查询集执行子查询 例如: q = Something.objects.filter(x=y).extra(where=query_set2) 简短回答:否。该方法不希望传入QuerySet 如果你想一想,这是有道理的。queryset是一种抽象,用于表示数据库上获取操作的结果,extra是将自定义字段从数据库附加到queryset的方便方法。除非您将extra的基本性质改为“使用另一查询集进行自定义筛选”,否则这将不起作用。我可以从两个方面理解您的问题 可以指定多个变

是否可以使用另一个查询集对查询集执行子查询

例如:

q = Something.objects.filter(x=y).extra(where=query_set2)
简短回答:否。该方法不希望传入QuerySet


如果你想一想,这是有道理的。queryset是一种抽象,用于表示数据库上获取操作的结果,
extra
是将自定义字段从数据库附加到queryset的方便方法。除非您将
extra
的基本性质改为“使用另一查询集进行自定义筛选”,否则这将不起作用。

我可以从两个方面理解您的问题

  • 可以指定多个变量 在过滤器参数中,用于 例如:

    q = Something.objects.filter(x=y, w=z)
    
  • 您希望在SQL中创建所谓的“连接”。这可以通过Django的聚合系统完成,见官方网站


  • 你到底想在这里干什么?代码对我来说毫无意义。是否确实要执行
    查询设置2.filter(something\uuux=y)