0

我有一个表格:

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,
    )

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

有什么方法可以在不填充表单的情况下验证表单,或者甚至更好地将这两个字段作为相关模型一起验证?

非常感谢任何帮助。

4

1 回答 1

1

我认为更简单的方法就是自己动手。你只需要:

  1. 一个ChoiceField。使用coerce将让您将 ID 透明地转换为对象
  2. AJAX 组件可以查询以检索Piece给定 s的有效列表的视图Module
  3. 一种服务器端验证方法,用于检查Module和 是否Piece对应
于 2012-12-12T03:31:00.403 回答