>  Q&A  >  본문

python - django 模板里如何多个值相加?

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 %}

求解,或者有没有其他的实现方法?

PHP中文网PHP中文网2741일 전479

모든 응답(2)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-04-18 10:32:19

    당신이 언급한 요구 사항에 따라 두 가지 솔루션이 있습니다.
    1. views.py에서 계산한 다음 템플릿으로 전송합니다.
    2. 구체적인 구현 방법. 다음과 같습니다:

    1단계: 프로젝트의 앱 디렉터리에 새 templatetags 폴더를 만들고(이 폴더는 views.py 및 models.py와 동일한 수준에 있음) 이 폴더에 __init__.py 및 add_value를 만듭니다. , 디렉토리 구조는 다음과 같습니다.

    으아악

    2단계: __init__.py 및 add_value.py 파일을 편집합니다. __init__.py 파일은 비어 있을 수 있습니다. add_value.py 파일의 내용은 다음과 같습니다.

    으아악

    3단계: views.py에서:

    으아악

    4단계: order_list.html 템플릿에 {% load add_value %}를 추가한 다음 <p>{{ order_list|add_value }}</p>

    을 사용합니다.

    결국에는 귀하의 요구 사항을 충족할 수 있어야 합니다. 도움이 되기를 바랍니다.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 10:32:19

    뷰에서 직접 처리한 후 템플릿에서 참조할 수는 없나요?

    회신하다
    0
  • 취소회신하다