动态生成django模板中的对象

时间:2017-08-09 20:00:42

标签: python django templates for-loop

我的系统中有2个型号:

class Display(models.Model):
    name = models.CharField
    UE = models.CharField
    description

class Register(models.Model):
    temp1 = models.FloatField()
    temp2 = models.FloatField()
    flow = models.FloatField()

我在模板内部使用for创建显示,但每个显示的值是Register模型中的相应字段。我无法使用Register进行循环,因为我只使用了行(我不能使用循环字段)。理解?

看看我的代码:

查看:

def main(request):
dp_col = Display.objects.all()
reg = Registers.objects.latest('pk')
context = {
    'dp_col': dp_col,
    'reg':reg
}
return render(request,'operation.html',context)

模板:

{% for dp in dp_col %}
        <div class='col-md-6'>
            <div class="display-content">
                <div class="display-data">
                    <h3 class="text-center display-desc">{{dp.name}}
                         <span>:</span> 
                         <span class="text-center display-value">I need put the value of each field here</span>
                         <span class='display-unit'>  {{dp.UE}}</span>
                    </h3>
                </div>
            </div>
        </div>
    {% empty %}
        <!--colocar alguma coisa aqui, caso não tenha nada no for-->
    {% endfor %}

有什么想法吗? 非常感谢!

1 个答案:

答案 0 :(得分:-1)

使用Django Forms可以很容易地解决这个问题:

yourapp / forms.py

from django import forms

class DisplayForm(forms.ModelForm):
    class Meta:
        model = Display
        fields = '__all__'

yourapp / views.py

from .forms import DisplayForm

def main(request):
    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = DisplayForm(request.POST)
        # check whether it's valid:
        if form.is_valid():
            # process the data in form.cleaned_data as required
            # ...
            # redirect to a new URL:
            return HttpResponseRedirect('/thanks/')

    # if a GET (or any other method) we'll create a blank form
    else:
        form = DisplayForm()

    return render(request, 'operation.html', {'form': form})

在operations.html中:

<form method="post" action="">
    {{ form }}
</form>

或者如果您想在每个字段中使用自定义html:

<form method="post" action="">
    {% for field in form %}
       {{ field.label_tag }} {{ field }}
    {% endfor %}
</form>

参考: https://docs.djangoproject.com/en/1.11/topics/forms/