[英]How do you pass data into a Django form?
我正在使用 Django 4.0,我正在尝试创建一个 web 应用程序,用户可以在其中从下拉列表 Django 表单中进行选择。 但是,选择会因问题而异,我希望表格能够适应这一点。
这是我在 forms.py 中的内容:
class QuestionAnswerForm(forms.Form):
def __init__(self, q_id, *args, **kwargs):
self.q_id = q_id
super(QuestionAnswerForm, self).__init__(*args, **kwargs)
q_id = self.q_id # this line throws an error
question = Question.objects.get(pk=q_id)
choice = forms.ChoiceField(choices=get_choices(question))
但是,我收到错误消息:未定义名称“self”。 我只想知道一种将问题 ID 传递给表单的简单方法,以便 get_choices function 可以返回需要在表单上显示的选项。
在 views.py 中,我对问题的看法以这种方式开始设置表单:
def question_detail_view(request, q_id):
print(f"Question id is {q_id}")
form = QuestionAnswerForm(request.POST or None, q_id=q_id)
我的问题是:如何访问 QuestionAnswerForm class 中的 q_id?
我发现了如何使用Passing **kwargs to Django Form来做到这一点:
forms.py:
class QuestionAnswerForm(forms.Form):
def __init__(self, *args, **kwargs):
q_id = kwargs.pop('q_id')
super(QuestionAnswerForm, self).__init__(*args, **kwargs)
if q_id:
self.fields['choice'].choices = get_choices(Question.objects.get(pk=q_id))
choice = forms.ChoiceField()
意见.py:
def question_detail_view(request, q_id):
form = QuestionAnswerForm(request.POST or None, q_id=q_id)
我相信一个解决方案是在创建模型时:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.