2015-10-06 64 views
0

我有形式Django的轉換和多視圖

amount = forms.IntegerField(label='Amount :',help_text='enter price') 

和模板HTML

{% if contact_data.amount %} 
<h4> Amount : {{ contact_data.amount }}</h4> 

我想在HTML模板打印 '量' 和 '量' * 1,75和 '量' /0.45?如何最好的解決方案

回答

2

我不知道我理解的問題......但如果你想要做的是顯示amount,amount * 1.75mount/0.45(不知道你是否打算再次乘以這裏)。然後....有很多方法可以做到這一點。

  1. 有些人會爭辯說,你應該在視圖中計算所有這些值,然後在模板中將它們表面化。如何從一個視圖模板傳遞數據的一個例子是在這裏:

    from django.shortcuts import render_to_response 
    
    def my_view(request): 
        # Assuming a function get_contact_data() because I don't know where you are 
        # getting this. 
        contact_data = get_contact_data() 
        return render_to_response(
         'polls/detail.html', 
         { 
          'amount_one': contact_data.amount, 
          'amount_two': contact_data.amount * 1.75, 
          'amount_three': contact_data.amount/0.45, 
         } 
        ) 
    
    # And then in the template... 
        <h4> Amount One: {{ amount_one }}</h4> 
        <h4> Amount Two: {{ amount_two }}</h4> 
        <h4> Amount Three: {{ amount_three }}</h4> 
    
  2. 最簡單的辦法是在模板中處理這個問題。在這種情況下,我會建議使用django-mathfilters。這將允許你做下面的模板:

    <h4> Amount : {{ contact_data.amount }}</h4> 
    <h4> Amount : {{ contact_data.amount|mul:1.75 }}</h4> 
    <h4> Amount : {{ contact_data.amount|div:0.45 }}</h4> 
    
  3. 如果contact_data是某種類型的數據模型,你可以在模型層處理:

    from django.db import models 
    
    class ContactData(models.Model): 
        amount = models.IntegerField() 
    
        @property 
        def amount_two(self): 
         return self.amount * 1.75 
    
        @property 
        def amount_three(self): 
         return self.amount/0.45 
    
    # And then in the template... 
        <h4> Amount One: {{ contact_data.amount }}</h4> 
        <h4> Amount Two: {{ contact_data.amount_two }}</h4> 
        <h4> Amount Three: {{ contact_data.amount_three }}</h4> 
    
+0

您還可以使用@mfcovington指示的基於類的視圖來執行此操作 – Nizebulous

0

如果您希望在視圖中執行此操作,並且您正在使用Class-Based Views,請使用ContextMixin將預先計算的值添加到傳遞到模板的上下文中。

views.py

from django.views.generic import DetailView 

from .models import YourModel 


class YourModelDetailView(DetailView): 
    model = YourModel 

    def get_context_data(self, **kwargs): 
     context = super(YourModelDetailView, self).get_context_data(**kwargs) 
     context['amount_mult'] = self.contact_data.amount * 1.75 
     context['amount_div'] = self.contact_data.amount/0.45 
     return context 

然後在你的模板,您使用類似:{{ amount_mult }}{{ amount_div }}