【问题标题】:django subquery without using group by不使用 group by 的 django 子查询
【发布时间】:2021-04-05 19:23:42
【问题描述】:
 class Config(models.Model):
     id = models.IntegerField(max_length=20, primary_key=True)
     appid = models.IntegerField(max_length=20)
     status = models.IntegerField(max_length=2)
     user_id = models.ForeignKey(User)
     name = models.IntegerField(max_length=10,null=False,default='0')
     path = models.CharField(max_length=500,null=False,default='')
     create_time =  models.DateTimeField()

class User(models.Model):
     hostip = models.IntegerField(max_length=20)

我需要知道如何编写 django 子查询。

对于下面的 MySQL 查询,我需要相等的 django 查询。

select *  from ((select A.appid,User.hostip ,A.name,A.path,A.status,A.create_time from Config as A left join  User on  A.appid = 1255 and User.hostip= '172.16.0.3') as B ) group by B.name order by B.create_time;

请告诉我........

【问题讨论】:

  • 在 Django 中,您必须考虑模型,而不是 SQL。请用文字说明您要归档的内容!

标签: python django orm model


【解决方案1】:

this link may help to create a join clause if t 可能不需要使用 join,因为 django 语法允许通过使用点表示法或使用双下划线来丰富相关对象。 对于您想要限制表格字段的部分,您可以查看Values 或者那个链接稍后会出现values_list

【讨论】:

    【解决方案2】:

    我的解决方案:Django 获取所有值 Group By 特定的一个字段

    queryset = Config.objects.filter(appid=appid,user_id__hostip=hostip,path__isnull=False)
    
    queryset = queryset.all()
    
    queryset.query.group_by = ['name']
    
    queryset = queryset.order_by('create_time')
    

    然后我只按 1 列按组获取所有对象

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-28
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多