微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从外键 Django 获取数据

如何解决从外键 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 举报,一经查实,本站将立刻删除。