使用Forms.py时如何在模板中手动编写表单

时间:2018-12-26 16:25:30

标签: django django-forms django-templates

我尝试在模板中手动编写表单设计,因为我从 {{form.as_p}} 获得的内容看起来很糟。

我得到了一个模型,该模型可以使用户和其他模型得到参考。就像一个用于多对一的连接模型,具有一个额外的字段。

这是我的模型,除了用户模型之外。

class UserGroup(models.Model):
    nickname = models.CharField(max_length=55)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    group = models.ForeignKey('group.Group', on_delete=models.CASCADE)

和小组模型

class Group(models.Model):
    name = models.CharField(max_length=250)
    location = models.ForeignKey('Location', on_delete=models.SET_NULL, null=True, blank=False)
    active = models.BooleanField(default=True)

Forms.py看起来像这样

class UserGroups(forms.ModelForm):

    class Meta:
        model = UserGroup
        fields = ('nickname', 'group')

也是c的视图:

@method_decorator(login_required, name='dispatch')
class UserGroup(generic.CreateView):
    form_class = UserGroups
    template_name = 'users/user_group.html'

    def get(self, request, *args, **kwargs):
        return render(request, self.template_name, {'form': self.form_class})

现在,当我在模板中使用{{form.as_p}}时。真的很难看。最糟糕的是,由于该小组人数众多。它创建一个“选择选项”下拉列表。 我什么都不是我想遍历所有群组,并为每个群组输入一个昵称。因此,用户可以决定要向其添加昵称的组。

据我所知。它循环遍历。

{% for f in form.group %}
     <label>{{ f }}</label>
     <input id="{{ f.group }}" name="{{ f.group }}" value="{{ f.group|default_if_none:'' }}" type="text" placeholder="nickname" />
{% endfor %}

我真的不知道如何从表单中调用pk,字段名称等。我找不到关于此的任何好的文档。

有关如何执行此操作的任何建议?

1 个答案:

答案 0 :(得分:0)

您可以使用表单字段名称使用它

<form action='' method=''>
   {% csrf_token %}
   {{form.name}}
   {{form.location}}
   {{form.active}}
   <input type='submit'/>
</form>

您可以重新保存此文档here