问题描述
**我只需要在查询中再添加一个表联接** 我想获得具有订单详细信息和送货地址的登录用户的销售。 我通过此查询获取当前用户的销售额,但我也想获取送货地址。
orderitems = OrderItem.objects.filter(
product__user=request.user,order__complete=1).order_by('-date_orderd')
现在我还想从Shippingaddress模型中获取地址,城市和州。 我附上了下面的模型。
我的模特: 订单型号:
class Order(models.Model):
user = models.ForeignKey(
User,on_delete=models.CASCADE,blank=True,null=True)
date_orderd = models.DateTimeField(auto_Now_add=True)
complete = models.BooleanField(default=False,null=True,blank=False)
transaction_id = models.CharField(max_length=200,null=True)
# product = models.ManyToManyField(OrderItem)
def __str__(self):
return str(self.id)
订购商品型号:
class OrderItem(models.Model):
product = models.ForeignKey(
Product,null=True)
order = models.ForeignKey(
Order,on_delete=models.SET_NULL,null=True)
quantity = models.IntegerField(default=0,blank=True)
date_orderd = models.DateTimeField(auto_Now_add=True)
user = models.ForeignKey(
User,null=True)
price = models.FloatField(blank=True,null=True)
def __str__(self):
return str(self.product)
送货地址模型:
class ShippingAddress(models.Model):
user = models.ForeignKey(
User,null=True)
name = models.CharField(max_length=150)
address = models.CharField(max_length=150)
city = models.CharField(max_length=150)
state = models.CharField(max_length=150)
zipcode = models.CharField(max_length=150)
date_orderd = models.DateTimeField(auto_Now_add=True)
def __str__(self):
return self.address
解决方法
您要查找的是“使用Django在一个查询中从多个表中选择”。您可以查看答案here。
,为什么不添加下面的另一个查询
shp_address = ShippingAddress.objects.filter(product__user=request.user)
,如果需要,作为上下文的一部分发送到客户端,请参见下文
context = {
'orderitems': orderitems,'shp_address': shp_address
}