我尝试在模板中手动编写表单设计,因为我从 {{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,字段名称等。我找不到关于此的任何好的文档。
有关如何执行此操作的任何建议?
答案 0 :(得分:0)
您可以使用表单字段名称使用它
<form action='' method=''>
{% csrf_token %}
{{form.name}}
{{form.location}}
{{form.active}}
<input type='submit'/>
</form>
您可以重新保存此文档here