2015-10-06 23 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 }}