Обновление поля модели в django не работает должным образом во время выполнения - PullRequest
0 голосов
/ 11 июня 2019

У меня есть модель товара и еще одна модель повреждена. В поврежденной модели я добавляю количество поврежденного количества определенного товара. Теперь мне нужно, чтобы это поврежденное_количество было уменьшено из поля запаса в модели Продукта, когда внешний ключ совпадает. Код работает, когда я добавил в модель Damaged поврежденный_квантовый уровень, но при отсутствии определенного продукта в поврежденном виде он выдает ошибку типа, поэтому я попытался сделать это в шаблоне, но он не работает.

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>

1 Ответ

0 голосов
/ 11 июня 2019

Я полагаю, это потому, что ваш набор запросов возвращает 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
...