python - 从 django 中的子模型访问父模型属性
问题描述
请任何人都可以帮我解决我想访问我在OrderItem模型中引用的项目模型中的项目,但我试图从 Order 模型访问项目这里是模型这里是用于访问的模型
class Order(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
ref_code = models.CharField(max_length=20)
items = models.ManyToManyField(OrderItem)
start_date = models.DateTimeField(auto_now_add=True)
order_date = models.DateTimeField()
ordered = models.BooleanField(default=False)
shipping_address = models.ForeignKey('Address',on_delete=models.SET_NULL,related_name='shipping_address',blank=True,null=True)
payment = models.ForeignKey('Payment',on_delete=models.SET_NULL,blank=True,null=True)
being_delivered = models.BooleanField(default=False)
received = models.BooleanField(default=False)
refund_requested = models.BooleanField(default=False)
refund_granted = models.BooleanField(default=False)
这是我要访问的父模型
class OrderItem(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
ordered_order = models.BooleanField(default=False)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
quantity = models.IntegerField(default=1)
并且我试图访问的项目必须在这个模型中
class Item(models.Model):
title = models.CharField(max_length=100)
price = models.IntegerField()
discount_price = models.IntegerField(blank=True, null=True)
category = models.ForeignKey(Categories, on_delete=models.DO_NOTHING)
tags = models.ManyToManyField(Tags, related_name='itemTags')
slug = models.SlugField(max_length=200, unique=True)
size = models.CharField(blank=True, null=True, max_length=5)
model = models.CharField(max_length=100, blank=True, null=True)
description = models.TextField()
quantity = models.IntegerField(default=1)
image = models.ImageField()
color = models.CharField(max_length=100, blank=True, null=True)
brand = models.CharField(max_length=100, blank=True, null=True)
Display = models.DecimalField(max_digits=100,
decimal_places=1,
blank=True,
null=True)
ram = models.CharField(max_length=100, blank=True, null=True)
material = models.CharField(max_length=100, blank=True, null=True)
hdd = models.CharField(max_length=100, blank=True, null=True)
size = models.CharField(max_length=100, blank=True, null=True)
lens = models.CharField(max_length=100, blank=True, null=True)
created_at = models.DateField(auto_now_add=True)
我正在尝试这个,但似乎不起作用
recent_orders=Order.objects.filter(user=2)
for item in recent_orders:
print(item.items.item.title)
任何人都可以帮帮我好吗!!!
解决方案
你需要这个代码:
recent_orders=Order.objects.filter(user=2)
for order in recent_orders:
for order_item in order.items:
print(order_item.item.title)
尝试为所有变量赋予不同的名称,这将使编程更有效
推荐阅读
- c - 错误:二进制 ^ 的操作数无效(有 'float' 和 'int' )
- accessibility - 屏幕阅读器忽略焦点事件
- android - 如何像 YouTube 应用一样在双击时制作快进动画
- graph - 如果只在图中添加一条边,是否可以增加 scc、“强连通分量”的数量?
- python - 如果最后一个打开的图形已关闭,如何使 plt.pause() 工作
- hyperledger-fabric - 无法在我的网络上使用 Node SDK + Mutual TLS 操作
- mongodb - 什么是 mongodb 中的 IP 绑定?
- java - 日期检查器不工作 - 假阴性
- c++ - 在 C++ 中为特定哈希表创建插入函数
- html - 带有启动和停止效果的 React Js 中的 Marquee