如何自定义django表单(添加多列)

时间:2013-09-03 16:07:21

标签: python django django-forms

目前,我正在使用默认的django模板构建表单,如下所示:

class old_form(forms.Form):
    row_1 = forms.FloatField(label='Row 1')
    row_2_col_1 = forms.FloatField(label='Row 2_1')
    row_2_col_2 = forms.FloatField(label='Row 2_2')

html = str(old_form())

但是,我想在我的模板中添加多个列,并且仍然使用django表单对象来定义参数。

新的温度。应该是什么样的(或者它可以循环遍历所有变量):

def getdjtemplate():
    dj_template ="""
    <table>
    <tr>{{ table.row_1 }}</tr>
    <tr>
      <td>{{ table.row_2_col_1 }}</td>
      <td>{{ table.row_2_col_2 }}</td>
    </tr>
    """
    return dj_template

djtemplate = getdjtemplate()
newtmpl = Template(djtemplate)

我的问题是如何“组合”新模板和课程old_form()

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用其字段as shown in the documentation自定义表单HTML。你是以一种不寻常的方式做到这一点;通常你会将模板放在一个文件中,而不是从函数中返回它,但你仍然可以这样做:

from django.template import Context

def getdjtemplate():
    dj_template = """
    <table>
        {% for field in form %}
        <tr>{{ field }}</tr>
        {% endfor %}
        </table>
        """
    return dj_template

form = old_form()
djtemplate = getdjtemplate()
newtmpl = Template(djtemplate)
c = Context({'form': form})
newtmpl.render(c)