为查询集中的每个实例创建可编辑的表单

时间:2014-07-21 05:23:11

标签: django django-forms

我想要做的是让用户选择编辑他们的信息。单击eidt时,页面应提取该会话的所有信息。这是一个事件注册,所以如果他们注册多个事件,我希望他们能够编辑所有事件。

这是我的查询

    events = signedup.objects.filter(sessionid = session)

从这里开始我觉得它可能是这样的:

 for event in events:
    person = inlineformset_factory(comp_name, signedup, can_delete=True)
    form = person(instance = event)

- 这对我不起作用,也许我做错了?

我使用了inlineformset_factory,因为表有外键关系,如果我不需要它,请告诉我。这样做的最佳方式是什么?我不希望他们能够添加新记录,只需删除和编辑他们当前的记录。感谢

1 个答案:

答案 0 :(得分:0)

由于您没有创建任何新实例,因此可以使用modelformset_factory。这将允许您编辑所需的结果;只需将instance instance = event更改为queryset = event并删除for循环。

您的代码应如下所示:

person = modelformset_factory(signedup , form=someform, extra = 0, can_delete=True)
form = person(queryset=signedup.objects.filter(sessionid = session))

通过它,您将获得与查询集匹配的所有实例的表单,如果您指定表单,则可以指定字段等。