【发布时间】:2011-04-24 16:22:19
【问题描述】:
我想在 django 中生成动态表单。假设我有一个模型,其中包含由所有表单字段组成的选项。如果我的用户选择 Textarea 选项并给出标签名称,则表单应显示带有给定标签的 textarea。它可以是文本输入、单选按钮等。
所以我的模型看起来像:
TYPE_CHOICES = (
(u'TextField',u'TextField'),
(u'TextArea',u'TextArea'),
)
class SocietyForm(models.Model):
title = models.CharField(max_length=255)
slug = models.SlugField()
form_info = models.ForeignKey(FormInfo)
class FormInfo(models.Model):
label = models.CharField(max_length=255)
content_type = models.CharField(max_length=100,choices=TYPE_CHOICES)
form_info = models.ForeignKey(SocietyForm)
到目前为止一切都很好,但是在生成小部件时,我不知道这里 = ) 我想,如果我根据选定的选项生成字典,那么我可以将它分配给表单的小部件。
'''
def select_form_type(instance):
dict = {}
if instance.content_type == "TextField":
dict.update({'%s'instance.label:forms.TextInput()})
else:
dict.update({'%s'instance.label:forms.Textarea()})
return dict
'''
#class SocietyJoinForm(forms.ModelForm,instance):
但是,SocietyJoinForm 无法识别实例输入。那么有什么想法吗?
【问题讨论】: