'ForeignKey'的实例没有'价格'成员。

问题描述 投票:0回答:1

当我试图在EquipmentOrderItem类中使用来自Equipment类的价格和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 %}
python django
1个回答
0
投票
 #{{ 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 }}
© www.soinside.com 2019 - 2024. All rights reserved.