我有一个模型产品,另一个模型已损坏。在“损坏的模型”中,我添加了某种产品的损坏数量。现在,当外键匹配时,我需要从Product模型的stock字段中减少Damaged_quantity。当我在Damaged模型中添加了Damaged_quantity时,代码起作用了,但是当某种产品没有Damaged_quantity时,它抛出了类型错误,因此我在模板中尝试了这种方法,但是它不起作用。
models.py
class Product(models.Model):
name = models.CharField(max_length=250)
quantity = models.IntegerField()
@property
def current_quantity(self):
return self.quantity - self.damaged_set.all().aggregate(sum=Sum('damaged_quantity')).get('sum', 0)
class Damaged(models.Model):
product = models.ForeignKey('Product', on_delete=models.CASCADE)
damaged_quantity = models.IntegerField(default=0)
模板
<td>
{% for damage in damaged %}
{% if damage.product_id == product.id %}
{{product.current_quantity}}
{% else %}
{{ product.quantity }} # else part not working properly.
{% endif %}
{% endfor %}
</td>
答案 0 :(得分:0)
我想是因为您的查询集为空时返回None。因此,您应该执行以下操作:
@property
def current_quantity(self):
damaged = self.damaged_set.all().aggregate(sum=Sum('damaged_quantity')).get('sum', 0)
if not damaged:
damaged = 0
return self.quantity - damaged