我有一个表格(下面的代码),将答案纳入响应模型。答案总是在1-3的范围内,但可能引用了各种不同的问题。
form.py
from Django import forms
RESPONSE_CHOICES = (
('1', '1. Happy'),
('2', '2. Neutral'),
('3', '3. Sad'),
)
class ResponseForm(forms.Form):
quid = forms.IntegerField()
response = forms.ChoiceField(choices=RESPONSE_CHOICES, widget=forms.RadioSelect())
quid
是ID
模型中question
的外键。
在template.html
中,我有:
<form action="" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" />
</form>
有没有一种方法可以在表单模板的单选按钮中设置quid
的值,呈现如下所示:
<label>1</label>
<input type="radio" value="1" name="{{ question.id }}">
<label>2</label>
<input type="radio" value="2" name="{{ question.id }}">
<label>3</label>
<input type="radio" value="3" name="{{ question.id }}">
答案 0 :(得分:0)
您可以在初始化中设置表单值,并执行以下操作:
class ResponseForm(forms.Form):
quid = forms.IntegerField()
response = forms.ChoiceField(choices=RESPONSE_CHOICES, widget=forms.RadioSelect())
def __init__(self, *args, **kwargs):
super(ResponseForm, self).__init__( *args, **kwargs)
field_value=Question.objects.get(id=kwargs["id"]).response
self.fields['response'].initial = field_value
请注意,这假定您正在使用id参数创建表单。
form = ResponseForm(id=quid)#quid is the relevant id
您还需要制定一个空白表格的计划。
但是,我的建议是:
在问题模型中使用外键代替整数id,这将使您的生活更轻松。
使用Modelform代替Form,它将自动完成上面的所有操作。