Python 正在尝试将SQL的左连接转换为Django查询集?

Python 正在尝试将SQL的左连接转换为Django查询集?,python,sql,django,django-models,Python,Sql,Django,Django Models,这是我的models.py文件 class Customer(models.Model): """All Customers details goes here""" name = models.CharField(max_length=255, null=False) firm_name = models.CharField(max_length=255, null=False) email = mo

这是我的models.py文件

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

    name = models.CharField(max_length=255, null=False)
    firm_name = models.CharField(max_length=255, null=False)
    email = models.EmailField(null=False)
    phone_number = models.CharField(max_length=255, null=False)
    location = models.CharField(max_length=255,null=True)
    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 = (
        ('CR', 'CR'),
        ('DR', 'DR'),
    )

    customer = models.ForeignKey(Customer, null=True, on_delete=models.SET_NULL)
    bill_name = models.CharField(max_length=255, null=False)
    payment_date=models.DateField(auto_now=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)
    description = models.TextField(null=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
我只想访问客户的姓名和订单的所有字段,简而言之,我想在Django查询集中转换以下SQL

选择名称、账单名称、帐户状态\u客户左侧加入 帐户\u订单上的帐户\u customer.id=帐户\u订单.customer\u id where accounts\u order.status=“DR”


可以使用两种方式执行联接操作: 第一:通过使用选择相关 即订单。对象。选择与之相关的(“客户”) 及 第二:通过使用过滤器:
例如,Order.objects.filter(status_uiexact=“DR”)

您可以使用两种方式执行连接操作: 第一:通过使用选择相关 即订单。对象。选择与之相关的(“客户”) 及 第二:通过使用过滤器:
例如,Order.objects.filter(status_uuiexact=“DR”)

要在订单对象上附加客户名称,可以使用带有
F
表达式的
注释

orders=Order.objects.annotate(
客户名称=F(“客户名称”)
).filter(status='DR')
对于订单中的订单:
打印(订单、客户名称)

如果您怀疑您想要访问更多的客户属性,您可能需要
选择\u related
(内存稍多,查询更大)

orders=Order.objects。选择_相关('customer')。筛选(status='DR')
对于订单中的订单:
打印(订单.客户.名称)

要在订单对象上附加客户名称,可以使用带有
F
表达式的
注释

orders=Order.objects.annotate(
客户名称=F(“客户名称”)
).filter(status='DR')
对于订单中的订单:
打印(订单、客户名称)

如果您怀疑您想要访问更多的客户属性,您可能需要
选择\u related
(内存稍多,查询更大)

orders=Order.objects。选择_相关('customer')。筛选(status='DR')
对于订单中的订单:
打印(订单.客户.名称)

谢谢你,伙计,这是一个非常棒的解释,非常棒的帮助谢谢你,伙计,这是一个非常棒的解释,非常棒的帮助谢谢,伙计,你帮了我很大的忙!!谢谢你,伙计,你帮了大忙!!