【发布时间】:2010-06-07 11:47:30
【问题描述】:
我最初编写代码以根据数据库中的数据动态构建表单,类似于我在previous SO post 中描述的内容。
正如 SO 用户 Daniel Roseman 指出的那样,他会为此使用表单集,现在我意识到他一定是完全正确的。 :)
我的方法基本上是有效的,但我似乎无法在整个表单中进行验证以使其正常工作(我相信这是可能的,但它变得相当复杂,并且必须有一种更聪明的方法来做到这一点 = > 表单集!)。
所以现在我的问题是:如何动态构建表单集?不是以 AJAX 方式,我希望每个表单的标签都填充数据库中的 FK 值(团队)。
由于我需要将参数传递给表单,因此我使用了之前 SO 帖子中的 this technique。
使用前一种方法,我的视图代码是(上一个链接中的表单代码):
def render_form(request):
teams = Team.objects.filter(game=game)
form_collection = []
for team in teams:
f = SuggestionForm(request.POST or None, team=team, user=request.user)
form_collection.append(f)
现在我想做这样的事情:
def render_form(request):
teams = Team.objects.filter(game=game)
from django.utils.functional import curry
from django.forms.formsets import formset_factory
formset = formset_factory(SuggestionForm)
for team in teams:
formset.form.append(staticmethod(curry(SuggestionForm, request.POST or None, team=team, user=request.user)))
但是附加位不起作用。这样做的正确方法是什么?
谢谢!
【问题讨论】:
标签: django django-forms