【问题标题】:Convert SQL query set into Django Model Query-set?将 SQL 查询集转换为 Django 模型查询集?
【发布时间】:2020-11-14 16:11:26
【问题描述】:

我想把下面的SQL查询转换成Django Query-set:-

从 accounts_order 中选择 sum(amount) 其中 status='Pending' 和 customer_id=1;

这是我的 models.py 文件

从 django.db 导入模型

在这里创建您的模型。

class Customer(models.Model):
    """All Customers details goes here"""

    name = models.CharField(max_length=255, null=False)
    email = models.EmailField(null=False)
    phone_number = models.CharField(max_length=255, null=False)
    date_created = models.DateTimeField(auto_now_add=True)

    class Meta:
        """Meta definition for Customer."""

        verbose_name = 'Customer'
        verbose_name_plural = 'Customers'

    def __str__(self):
        """Unicode representation of Customer."""
        return self.name


class Order(models.Model):
    """All order details goes here.It has OneToMany relationship with  Customer"""
    STATUS = (
        ('Pending', 'Pending'),
        ('Done', 'Done'),
    )

    customer = models.ForeignKey(
        Customer, null=True, on_delete=models.SET_NULL)
    bill_name = models.CharField(max_length=255, null=False)
    status = models.CharField(max_length=255, choices=STATUS, null=False)
    amount = models.FloatField(max_length=255, null=False)
    date_created = models.DateTimeField(auto_now_add=True)

    class Meta:
        """Meta definition for Order."""

        verbose_name = 'Order'
        verbose_name_plural = 'Orders'

    def __str__(self):
        """Unicode representation of Order."""
        return self.bill_name

【问题讨论】:

  • 请分享相关模型。

标签: python mysql django django-models


【解决方案1】:

您可以在此处使用.aggregate(…) [Django-doc]

from django.db.models import Sum

Order.objects.filter(
    status='Pending', customer_id=1
).aggregate(total_amount=Sum('amount'))['total_amount']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-26
    • 2023-01-31
    • 2020-09-02
    • 2019-10-27
    • 2015-06-25
    • 2012-12-15
    • 2021-11-08
    • 2017-01-23
    相关资源
    最近更新 更多