python - 'ForeignKey' 实例没有'price' 成员
问题描述
当我尝试在 EquipmentOrderItem 类中使用 Equipment 类中的 price 和 discount_price 对象时出现错误
这是我的models.py文件中的类
class EquipmentOrderItem(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
ordered = models.BooleanField(default=False)
equipment = models.ForeignKey(Equipment, on_delete=models.CASCADE)
quantity = models.IntegerField(default=1)
objects = models.Manager()
def __str__(self):
return f"{self.quantity} of {self.equipment.name}"
def get_total_equipment_price(self):
return self.quantity * self.equipment.price
def get_total_discount_equipment_price(self):
return self.quantity * self.equipment.discount_price
这是我想从中获取对象的类
class Equipment(models.Model):
name = models.CharField(max_length=200)
pic = models.ImageField(upload_to='gallery')
description = models.TextField(default='about item')
price = models.FloatField(default=0)
discount_price = models.FloatField(blank=True, null=True)
category = models.CharField(choices=CATEGORY_CHOICES, max_length=3, default='VID')
label = models.CharField(choices=LABEL_CHOICES, max_length=1, default='P')
slug = models.SlugField()
objects = models.Manager()
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('create:equipment_detail', kwargs={
'slug': self.slug
})
def get_add_to_cart_url(self):
return reverse("create:add_to_cart", kwargs={
'slug': self.slug
})
def get_remove_from_cart_url(self):
return reverse("create:remove_from_cart", kwargs={
'slug': self.slug
})
这是我从模板进行调用的地方
{% for equipment_order_item in object.equipments.all %}
<tr>
<th scope="row">1</th>
<td>{{ equipment_order_item.equipment.name }}</td>
<td>{{ equipment_order_item.equipment.price }}</td>
<td>{{ equipment_order_item.quantity }}</td>
<td>
{% if equipment_order_item.discount_price %}
#{{ equipment_order_item.quantity.get_total_discount_equipment_price }}
(Saving #{{ equipment_order_item.get_amount_saved }})
{% else %}
#{{ equipment_order_item.quantity.get_total_equipment_price }}
{% endif %}
</td>
</tr>
{% endfor %}
解决方案
#{{ equipment_order_item.quantity.get_total_discount_equipment_price }}
(Saving #{{ equipment_order_item.get_amount_saved }})
{% else %}
#{{ equipment_order_item.quantity.get_total_equipment_price }}
此代码尝试调用数量字段上的方法,而不是订单项上的方法。考虑到模板中的 python 注释被渲染引擎忽略,html 注释也是如此。
尝试将其更改为:
#{{ equipment_order_item.get_total_discount_equipment_price }}
(Saving #{{ equipment_order_item.get_amount_saved }})
{% else %}
#{{ equipment_order_item.get_total_equipment_price }}
推荐阅读
- javascript - 如何为文件添加自动递增数值?这样当文件被下载或查看时值会增加
- angular - 当您从 Chrome 自动填写卡号时,如何让 Angular 显示 Visa 信用卡/借记卡
- python - python中数百万行的高效欧几里得距离计算
- python - 为什么我的自定义损失函数不接受转换后的 numpy 数组?
- python - 如何在 pandas 创建的条形图上获取 x-ticks 的位置?
- javascript - 部分客户端更新 Chrome 后无法获取 IP
- angularjs - 使用 angular.copy
- symfony - [主键缺失值]
- deep-learning - Google Colab 中的 Yolo V3
- python - python - 如何使用模来查找一个数字是否可以被python中的第二个整除?