我有以下型号:
VARIABLE_CHOICES = (
('bool', 'On/Off'),
('date', 'Date'),
('float', 'Number'),
('text', 'Text'),
)
class LetterVariable(models.Model):
name = models.CharField(max_length=20)
type = models.CharField(max_length=5, choices=VARIABLE_CHOICES)
data = models.CharField(max_length=100)
我想创建一个表单,当我从数据库中传递LetterVariable
的实例时,它将基于data
为type
创建相应的小部件。
我有什么想法可以做到这一点?
答案 0 :(得分:3)
class LetterVariableForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(LetterVariableForm, self).__init__(*args, **kwargs)
if not self.instance:
raise Exception('You forgot the instance!');
if self.instance.type == 'something':
self.fields['data'].widget = forms.SomeWidget()