如何解决从外键 Django 获取数据
我正在尝试获取与订单项相关的所有产品,但在执行查询时遇到问题。 我想列出一个订单项中的所有产品。希望我已经提供了所需的一切。
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)
让我知道它是否有帮助:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。