【问题标题】:translate the SQL query to django model将 SQL 查询转换为 django 模型
【发布时间】:2019-10-27 14:10:48
【问题描述】:

我有一个 SQL 查询:

   Select * From Order a Where date = (Select Max(b.date) From Order b Where a.company = b.company)

如何使用 Django ORM 将其翻译成 Django 方式?

型号:

class Order(models.Model):
    id            = models.UUIDField(primary_key=True, default=uuid.uuid4)
    company       = models.ForeignKey('company', on_delete =models.CASCADE, null=False)
    text          = models.TextField(null=True, blank=True)                      
    date          = models.DateTimeField(null=True)

【问题讨论】:

标签: django


【解决方案1】:

您是否希望获得每个公司Order 的最大日期对象?你可以试试

Order.objects.all().order_by('-date').distinct('company')

这应该按查询集日期降序排列并返回第一个不同的公司

【讨论】:

    【解决方案2】:

    您可以做的一种方法是使用 raw 运行查询:

    order.objects.raw("Select * From Order a Where date = (Select Max(b.date) From Order b Where a.company = b.company)")
    

    请查看以下文档: https://docs.djangoproject.com/en/2.2/topics/db/sql/#mapping-query-fields-to-model-fields

    【讨论】:

      猜你喜欢
      • 2020-11-14
      • 2017-05-04
      • 2011-02-01
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 2020-05-27
      相关资源
      最近更新 更多