Django验证空的ModelChoice表单字段

时间:2012-12-12 03:18:06

标签: django django-models django-forms

我有一张表格:

class ProjectInfoForm(forms.Form):
    module = forms.ModelChoiceField(
        queryset=Module.objects.all(),
    )
    piece = forms.ModelChoiceField(
        queryset=Piece.objects.all(),
        required=False,
    )

使用ajax从第一个字段填充第二个字段。但是,像这样实例化它并不是非常有效,因为它意味着第二个字段在页面加载时不成功填充(更不用说在它应该之前填充字段)。

所以我尝试将其更改为:

    ...
    piece = forms.ModelChoiceField(
        queryset=Piece.objects.none(),
        required=False,
    )

我得到了所需的结果,但当然表格没有验证它没有选择要检查。

我是否有某种方法可以在不填充表格的情况下验证表单,甚至可以更好地将两个字段一起验证为相关模型?

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:1)

我认为更简单的方法就是推销自己的方式。你只需要:

  1. A ChoiceField。使用coerce可以透明地将ID转换为对象
  2. 您可以查询AJAX组件以查找给定Piece的有效Module列表的视图。
  3. 检查ModulePiece是否对应的服务器端验证方法
相关问题