如何在表单中添加额外的textarea字段

时间:2012-06-12 16:48:09

标签: python django

我需要生成几个textareas,由用户填写并提交回模型。但是,我认为他们需要所有人都有不同的名字(我是否正确?)

如何为每个textarea生成随机名称以及模型如何在获取POST请求的过程中获取数据?

谢谢!

编辑:我希望使用随机生成的名称来识别内容并将其保存在数据库中

1 个答案:

答案 0 :(得分:1)

这里很难给你一个好的答案,因为你没有说明你实际想要实现的目标。您可以在表单中添加1000个文本字段,但如果它们与模型上的数据不相关,则没有多大意义,您忽略了这一重要信息。

尽管如此,在非常基础的层面上,您可以将更多的textareas添加到表单中,如下所示:

class MyModelForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyModelForm, self).__init__(*args, **kwargs)

        for i in range(1, 11):
            self.fields['mytextarea%d' % i] = forms.CharField(label='Textarea %d' % i, widget=forms.Textarea)

<强>更新

根据您的评论,以及您打算稍后存储和检索textarea字段的事实,您应该为它们创建一个单独的模型,并通过一对一将其链接到您的主模型很多关系。例如:

class PrimaryModel(models.Model):
    ... # Stuff here

class TextareaModel(models.Model):
    myprimarymodel = models.ForeignKey(PrimaryModel)
    mytextarea = models.TextField()

很难给出一个很好的例子,因为你没有说明模型的外观,但基本的想法是你有一个模型只包含主模型的外键和textarea字段。然后,您可以通过模型formset将这些textareas视为内联。