让我说说我有一个基于模型的表格:
Form1:
class Meta:
model = Comment
widgets = {"field1": forms.HiddenInput } # option 1
#or
widgets = {"field2": forms.HiddenInput } # option 2
我有2个小部件选项。第一-显示第二个字段,但隐藏第一和第二-其他方式。 选项1或选项2的选择取决于它会从URL扭曲接收到的“关键”变量。例如,如果键== 1,则选择选项1;如果键== 2,则选择第二选项。
#example
<a href="{% url "app:route" key="1 or 2 " pk=object.pk %}"> COMMENT</a>
问题是如何以.forms形式访问self.kwargs词典?还是有另一种更简单的方法呢? 最终目标是使用其中一个基于“ key”变量的选项,即不同的URL会发送不同的“ key = x”变量。
在哪里可以在Django中实现这种逻辑?观看次数?
答案 0 :(得分:1)
您需要向表单发送访问url的信息,然后可以使用此信息选择要使用的窗口小部件。
更改表单的__init__
:
#forms.py
class Form1(ModelForm):
def __init__(self, key, *args, **kwargs):
super(Form1, self).__init__(*args, **kwargs)
if key == 1:
self.fields['field1'].widget = forms.HiddenInput() # option 1 HiddenInput()
else:
self.fields['field2'].widget = forms.HiddenInput() # option 2 HiddenInput()
class Meta:
model = Comment
然后,在您看来,将请求的kwargs
中的密钥添加到表单的kwargs
# views.py
class MyFormView(FormView):
form_class = Form1
def get_form_kwargs(self):
kwargs = super(MyFormView, self).get_form_kwargs()
kwargs['key'] = self.kwargs.get('key')
return kwargs