我需要生成几个文本区域供用户填写并提交回模型。但是,我认为他们都需要有不同的名字(我正确吗?)
如何为每个 textarea 生成随机名称,以及模型如何在获取 POST 请求的一个内获取数据?
谢谢!
编辑:我希望使用随机生成的名称来识别内容并将它们保存在数据库中
在这里很难给你一个好的答案,因为你没有指出你真正想要达到的目标。您可以在表单中添加 1000 个文本字段,但如果它们与模型上的数据不相关,那么就没有多大意义,而且您忽略了重要的信息。
尽管如此,在一个非常基本的层面上,您可以像这样将额外的文本区域添加到您的表单中:
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 字段。然后,您可以通过模型表单集将这些文本区域视为内联。