Python 正在尝试将SQL的左连接转换为Django查询集?
这是我的models.py文件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
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')
对于订单中的订单:
打印(订单.客户.名称)
谢谢你,伙计,这是一个非常棒的解释,非常棒的帮助谢谢你,伙计,这是一个非常棒的解释,非常棒的帮助谢谢,伙计,你帮了我很大的忙!!谢谢你,伙计,你帮了大忙!!