Python 如何在django模板中筛选表单

Python 如何在django模板中筛选表单,python,django,forms,twitter-bootstrap-3,Python,Django,Forms,Twitter Bootstrap 3,我正在尝试使用django和django-bootstrap3制作一个表单帖子。表单包含以下字段:姓名、电子邮件、电话、公司、主题和消息。模板代码如下所示 问题:如果我不想使用表单的所有字段来生成tempate,比如只使用name、email和phone,那么如何实现?我想我可以过滤表单,但我不知道怎么做 {%load bootstrap3%} {%block contact page%} 放下你的留言 我们期待着您的回复 {%bootstrap_form%} {%buttons%} {%bo

我正在尝试使用django和django-bootstrap3制作一个表单帖子。表单包含以下字段:姓名、电子邮件、电话、公司、主题和消息。模板代码如下所示

问题:如果我不想使用表单的所有字段来生成tempate,比如只使用name、email和phone,那么如何实现?我想我可以过滤表单,但我不知道怎么做

{%load bootstrap3%}
{%block contact page%}
放下你的留言

我们期待着您的回复

{%bootstrap_form%} {%buttons%} {%bootstrap_图标“star”%}提交 {%endbuttons%}
{%endblock%}
使用django-bootstrap3,您可以使用
{%bootstrap\u field form.fieldname%}
标记仅呈现特定字段。但是,如果某些省略的字段是必需的,这可能会导致错误,因为表单接收到的省略字段为空,但仍会检查它们是否有效


更干净的方法是在表单中省略这些字段。通过在
ModelForm
中使用
Meta.fields
参数,或者从常规
表单中删除字段,我可以理解您需要什么。您必须添加姓名、电子邮件和电话

试想一下,如果您使用
姓名、电子邮件、电话、公司、主题和消息
django-bootstrap3提供了一个选项,可以使用
bootstrap\u field
单独添加字段

#models.py
class CustomUser(models.Model):
    name = models.CharField(max_length=100)
    email = models.CharField(max_length=100)
    phone = models.CharField(max_length=100)
    company = models.EmailField(max_length=150)
    subject = models.CharField(max_length=100)
    message = models.CharField(max_length=100)

# template.html
{% load bootstrap3 %}

<form action="" role="form" method="post">{% csrf_token %}
    {% bootstrap_field form.name placeholder='Name' %}
    {% bootstrap_field form.email placeholder='Email' %}
    {% bootstrap_field form.phone placeholder='Phone' %}
    {% buttons submit='OK' reset="Cancel" %}{% endbuttons %}
</form>
#models.py
CustomUser类(models.Model):
name=models.CharField(最大长度=100)
email=models.CharField(最大长度=100)
phone=models.CharField(最大长度=100)
company=models.EmailField(最大长度=150)
主题=models.CharField(最大长度=100)
message=models.CharField(最大长度=100)
#template.html
{%loadbootstrap3%}
{%csrf_令牌%}
{%bootstrap_字段form.name占位符='name'%}
{%bootstrap_字段form.email占位符='email'%}
{%bootstrap_字段form.phone占位符='phone'%}
{%buttons submit='OK'reset=“Cancel”}{%endbuttons%}

我想你明白了。我明白了。谢谢你,蒂姆

{%load bootstrap3%}
{%block contact page%}
放下你的留言

我们期待着您的回复

{%形式的字段为%} {%if field.name!=“subject”和field.name!=“message”%} {%bootstrap_字段%} {%endif%} {%endfor%} {%形式的字段为%} {%如果field.name=='subject'或field.name=='message%} {%bootstrap_字段%} {%endif%} {%endfor%} {%buttons%} {%bootstrap_图标“star”%}提交 {%endbuttons%}
{%endblock%}
添加您的django表单代码简单地用您想要的字段编写另一个表单不是最容易的吗?使用ModelForm不太可能超过几行代码。如果表单有很多复杂的编码,那么要么剪切粘贴修改(我真的建议了吗?)要么从中生成子类。实际上,我想将表单分成两部分,并在模板中使用这两部分中的每一部分。在这种情况下,使用
{%bootstrap\u field form.fieldname%}可能最容易单独呈现每个字段
tag。