0
から始まりは単純です:ダイナミックMultiwidget/MultivalueFieldモデル
class Question(models.Model):
question_string = models.CharField(max_length=255)
answers = models.CharField(max_length=255)
答えは、[ 'はい'、 'いいえ']の文字列例えばリストのJSONです。回答の数は動的です。 私の挑戦は、このモデルのためのフォームを書くことです。
現在の状態は以下のとおりです。
class NewQuestionForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(NewQuestionForm, self).__init__(*args, **kwargs)
if self.instance:
self.fields['answers'] = AnswerField(num_widgets=len(json.loads(self.instance.answers)))
class Meta:
model = Question
fields = ['question']
widgets = {
'question': forms.TextInput(attrs={'class': "form-control"})
}
class AnswerField(forms.MultiValueField):
def __init__(self, num_widgets, *args, **kwargs):
list_fields = []
list_widgets = []
for garb in range(0, num_widgets):
field = forms.CharField()
list_fields.append(field)
list_widgets.append(field.widget)
self.widget = AnswerWidget(widgets=list_widgets)
super(AnswerField, self).__init__(fields=list_fields, *args, **kwargs)
def compress(self, data_list):
return json.dumps(data_list)
class AnswerWidget(forms.MultiWidget):
def decompress(self, value):
return json.loads(value)
問題がある:私は得る{{フィールド}} '
は何か 'で、テンプレートに' NoneType '' JSONオブジェクトは、ないのをstrされなければなりません'違う?