models.py
class Order(models.Model):
price_a = models.PositiveIntegerField(blank=True, null=True)
price_b = models.PositiveIntegerField(blank=True, null=True)
price_c = models.PositiveIntegerField(blank=True, null=True)
views.py
def order_list():
order_list = Order.objects.all()
return render(request, 'orders/order_list.html', {'order_list': order_list})
模板:
{% for order in order_list %}
price_* 可能是 None
这里想输出 price_a + price_b + price_b 的总和
下面这个写法没有用:
{{ price_a|add:price_b|add:price_c }}
{% endfor %}
求解,或者有没有其他的实现方法?
Selon les besoins que vous avez mentionnés, il existe deux solutions :
1. Calculez-le dans vues.py puis transférez-le dans le modèle
2. Personnalisez les filtres du modèle pour l'implémenter. Comme suit :
Première étape : créez un nouveau dossier templatetags dans le répertoire app de votre projet (ce dossier est au même niveau que vos vues.py et models.py), et créez __init__.py et add_value dans ce dossier. , la structure des répertoires est la suivante :
Étape 2 : Modifiez les fichiers __init__.py et add_value.py. Le fichier __init__.py peut être vide. Le contenu du fichier add_value.py est le suivant :
Étape 3 : Dans vues.py :
Étape 4 : Ajoutez
{% load add_value %}
à votre modèle order_list.html, puis utilisez<p>{{ order_list|add_value }}</p>
En fin de compte, vous devriez pouvoir répondre à vos besoins. J'espère que cela pourra vous aider.
Ne pouvez-vous pas le gérer directement dans la vue, puis le référencer dans le modèle ?