0

私はフォームを持っています:

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

2 番目のフィールドには、ajax を使用して最初のフィールドのオプションが入力されます。ただし、このようにインスタンス化することは、ページの読み込み時に 2 番目のフィールドが不必要に入力されることを意味するため、あまり効率的ではありません (言うまでもなく、必要になる前にフィールドに入力されます)。

だから私はそれを次のように変更しようとしました:

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

望ましい結果が得られますが、もちろんフォームは検証されず、チェックする選択肢がありません。

フォームに入力せずにフォームを検証したり、2 つのフィールドを関連モデルとして一緒に検証したりする方法はありますか?

どんな助けでも大歓迎です。

4

1 に答える 1

1

簡単な方法は、自分でロールすることだと思います。必要なものは次のとおりです。

  1. A. ChoiceField_ を使用coerceすると、ID を透過的にオブジェクトに変換できます
  2. Piece特定のの有効な のリストを取得するために AJAX コンポーネントが照会できるビューModule
  3. Moduleと がPiece一致することを確認するサーバー側の検証方法
于 2012-12-12T03:31:00.403 に答える