Django:如何实例化表单集中的所有表单?

2024-05-18 15:34:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个型号:

class option(models.Model):
    warval = models.ForeignKey(war)
    caption = models.CharField(max_length=20)
    text = models.TextField(blank=True,null=True)
    url = models.URLField(blank=True,null=True)
    user = models.ForeignKey(User)

也有以下形式:

^{pr2}$

假设我创建了一个“文本选项”的表单集形式。什么我想用“war”:w和“user”:u实例化这个表单集中的所有表单那个。还有如果这不可能,那我还有什么选择呢?在


Tags: true表单modelmodelsnull形式classoption
1条回答
网友
1楼 · 发布于 2024-05-18 15:34:19

你想要什么是可能的。我现在不记得是否有一些基于类的视图会自动为您做到这一点(我想不会),但是您可以不费吹灰之力就手动完成它。在

在viewpost方法中,在将formset中的表单实例化(查看一下this)并检查其有效性之后,可以iterate over formset's forms,并根据需要设置它们的user和warval。在

另一个选项是将user和warval设置为initial values,这样表单集中的每个表单都将拥有您想要的user和warval。在

如果您需要一个关于如何完成所有这些事情的示例,我可以尝试添加一些来帮助您,但是我认为django文档是最好的方法。。。。在

编辑:model's clean method一样,可以在formset的clean方法中为表单集(或formset中的表单)添加一些“默认”值。您可以尝试按照this步骤来包含您自己的clean方法,然后像这样在表单集中实例化每个表单(注意:我没有在我的计算机中尝试,但是如果必须的话,我会这样做):

for form in formset:
    form.instance.user = user
    form.instance.warval = warval

希望有帮助!在

相关问题 更多 >

    热门问题