0

我需要为 if/else 语句获取 a 的选定值,该语句根据选定的值forms.Choicefield生成另一个forms.Choicefield

forms.py:

class ReceiverForm(forms.Form):
receivers = forms.ChoiceField(choices=db_mails(), required=True, label='Receivers')

if db_certs(<- selected value from receivers ChoiceField ->):
    print "cert found"
    encryption = forms.ChoiceField(choices=EncryptionChoiceAll, initial='smime_mail', required=True, label='Encryption')
else:
    print "no cert found"
    encryption = forms.ChoiceField(choices=EncryptionChoiceNoCert, initial='smime_mail', required=True, label='Encryption')

db_mails()并按db_certs(mail)预期工作

有没有办法在 forms.py 中实现我需要的东西,还是我的设计完全错了?

4

1 回答 1

0

构建表单并指定选择列表时,您无法知道选择了哪个值,因为:

  1. 创建表单类的实例
  2. 此实例用于创建视图(在 GET 请求上)。用户可以修改选择
  3. 他提交表格。为此,您创建了一个类的实例,其中填充了 POST 值。

因此,在您创建课程时,您没有这些信息。

有可能在一个选项中具有动态值,具体取决于另一个选项,但这需要在客户端完成,当用户更改选择时:

  • 使用 javascript/jquery 根据答案更新选项列表。为此,您可以在 HTML 文件中隐藏值,Javascript 将从这些隐藏值中更新列表。
  • 如果更新的选择更加动态(例如,取决于邮政编码的城镇列表),您仍然需要使用 Javascript,但使用 Ajax 会向服务器发送异步请求以获取列表并更新选择。

有很多教程可以做到这一点,这并没有直接链接到 Django。举个例子:

https://css-tricks.com/dynamic-dropdowns/

于 2015-08-26T14:50:12.083 回答