当前位置: 首页 > 面试题库 >

Django-使用多种形式

温凯
2023-03-14
问题内容

我想做的是在一个页面中管理多个表单,我知道有表单集,并且我知道表单管理的工作原理,但是我的想法有些问题。

为了帮助你想象我的问题是什么,我将使用django示例模型:

from django.db import models

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField()

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

现在,假设我已经完成了表格的分类:

from django import forms
from mysite.polls.models import Poll, Choice

class PollForm(forms.ModelForm):
    class Meta:
        model = Poll

class ChoiceForm(forms.ModelForm):
    class Meta:
        model = Choice
        exclude = ('poll',) 

所以我想做的是在一个页面中有Poll and Choice模型的多个表单实例,但是请记住,这些模型也可以重复:

<form action="{{url}}" method="post">
    {{pollform}}
    {{choiceform}}
    {{pollform}}
</form>

如你所见,有两种“轮询”形式和一种“选择”形式,但“轮询”形式由“选择”形式分开。我确实需要表单在页面中保持顺序,因此使用表单集会有点困难。

我遇到的问题是,帖子中出现的值全都是名称“ answer”,因此我从名称中获得了所有表单中所有元素的列表,名称是“ answer”,但我无法确定哪些元素属于每种形式。

不知道这种解释是否对我的问题有清晰的认识。有什么想法可以完成这些工作吗?

谢谢你的帮助!

PD:不要关注“民意测验”与“选择”之间的关系,这些模型只是为了阐明问题,所以这种关系一点也不重要。


问题答案:

使用prefixkwarg

你可以将表单声明为:

form = MyFormClass(prefix='some_prefix')

然后,只要前缀相同,就将数据处理为:

form = MyFormClass(request.POST, prefix='some_prefix')

Django将处理其余的工作。

这样,你可以在页面上拥有任意数量的相同类型的表单



 类似资料:
  • 问题内容: 我有一个模板页面,需要两种形式。如果我仅使用一种形式,则可以像下面的典型示例一样正常: 但是,如果我想使用多个表单,我如何让视图知道我仅提交一种表单,而不提交另一种表单(即,它仍然是request.POST,但我只想处理提交表单的表单)发生了吗? 这是该解决方案基于这样的答案expectedphrase和bannedphrase是的提交按钮的不同形式和名称expectedphrasef

  • 问题内容: 我正在构建一个支持票证跟踪应用程序,并希望在一个页面上创建一些模型。票证通过ForeignKey属于客户。注释也通过ForeignKey属于票证。我想选择一个客户(这是一个单独的项目),或者创建一个新的客户,然后创建一个工单,最后创建一个分配给新工单的便笺。 由于我是Django的新手,因此我倾向于反复工作,每次尝试新功能。我玩过ModelForms,但是我想隐藏一些字段并进行一些复杂

  • 我正在寻找一种方法来创建一组多边形(rechtangles),沿着一条线在多个多边形中创建一组多边形(rechtangles),并将其水平隔开,如图所示。 我尝试生成点并将其用作多边形的中点,但问题是,通过创建等间距的点光栅,除了180度之外,不可能以任何其他方向旋转。 例子 给出了一个多多边形形状的对象和由宽度和高度以及每个多边形之间的垂直和水平间距定义的多边形。多边形应仅放置在多多边形内,且不

  • 本文向大家介绍js匿名函数的调用示例(形式多种多样),包括了js匿名函数的调用示例(形式多种多样)的使用技巧和注意事项,需要的朋友参考一下 匿名函数就是没有实际名字的函数。 javaScript的匿名函数形式多样,而且不搞清楚,容易看晕代码。 以下是成功调用的匿名函数: 使用匿名函数也要注意经常犯的错误: 另外要注意理解小括号的作用。 小括号能把我们的表达式组合分块,并且每一块,也就是每一对小括号

  • 我希望通过一条线串拆分一个多多边形(代表一个有岛屿的国家),从而将该县一分为二。 此结果是GeometryCollection对象中的一组多边形。如何将结果分组为两个多多边形对象,每个对象都包含各自一半的多边形? 使现代化 问题:确定分裂形状几何的“左”和“右”侧提供了一个很好的解决方案,其中从结果中的每个多边形中提取一个点,看看当与分裂的LineString结合时,它是否形成顺时针或逆时针线串。

  • 问题内容: 我是Django的新手,如果您能向我提供一些指导,我将不胜感激。我正在尝试创建一种允许用户在一个或多个选项上打勾的表格。我知道我必须将MultiChoiceField字段与CheckboxSelectMultiple小部件一起使用,但是Django文档没有提供有关此主题的示例。如果您能给我一个例子并解释如何处理结果,将不胜感激。例如,如果我有一个带有选项abcd的表单,并且用户在c和d