问题描述
我正在尝试获取与订单项相关的所有产品,但在执行查询时遇到问题。 我想列出一个订单项中的所有产品。希望我已经提供了所需的一切。
from django.core.validators import RegexValidator
from django.db import models
from django.urls import reverse
from django.utils.text import slugify
from django.contrib.auth import get_user_model
class Order(models.Model):
ref_code = models.CharField(max_length=20,blank=True,null=True)
first_name = models.CharField(('first name'),max_length=30,blank=True)
last_name = models.CharField(('last name'),blank=True)
class Product(models.Model):
category = models.ForeignKey(Category,related_name='products',on_delete=models.CASCADE)
name = models.CharField(max_length=200,db_index=True,unique=True)
class OrderItem(models.Model):
order = models.ForeignKey(Order,related_name='items',on_delete=models.CASCADE)
product = models.ForeignKey(Product,related_name='order_items',on_delete=models.CASCADE)
price = models.DecimalField(max_digits=10,decimal_places=2)
quantity = models.PositiveIntegerField(default=1)
slug = models.SlugField(max_length=200,db_index=True)
解决方法
一个想法
# For all_entries
all_entries = OrderItem.objects.all() #or all_entries = OrderItem.filter(order = order)
# one orderItem
for oi in orderItem:
products_of_one_oi = oi.product
for product in products_of_one_oi:
print(product)
,
试试这个:
# Get list of product ids of a particular order
product_ids = OrderItem.objects.filter(order=order).values_list('product',flat=True)
# Get products from list of product ids
products = Product.objects.filter(id__in=product_ids)
让我知道它是否有帮助:)