モデル A とモデル B と呼ぶモデルがいくつかあります。B から A への外部キーがあります。
つまり、A と B の間のカーディナリティは 1:n です。
MF_B という B に対応する ModelForm を作成しました。Bで定義する追加のフィールドがあります。例
class MF_B(forms.ModelForm):
stuff = forms.MultipleChoiceField(queryset=None, required=False)
class Meta:
model=B
上記のコードが示すように、ここでは選択肢にクエリセットを入力します。(スタッフ フィールドにクエリセットを設定するために使用するinit ()のオーバーライド コードを省略しました)
取引は、inlineformset_factory を使用して、1 つのページに A のフォームと B の複数のフォームを作成したいということです。
たくさんの新しい kwargs を inlineformset_factory に渡したかったのですが、予期しないキーワード引数について不平を言い続けていました.djangoでバックエンド コードを見た後、理由がわかりました.inlineformset_factory はカスタム kwargs を取りません. メソッド sig で定義された kwargs のみを取ります。
def inlineformset_factory(parent_model, model, form=ModelForm,
formset=BaseInlineFormSet, fk_name=None,
fields=None, exclude=None,
extra=3, can_order=False, can_delete=True, max_num=None,
formfield_callback=None):
クエリセットに返されるオブジェクトをフィルター処理するには、self.request.user を渡す必要があるため、icanは formfield_callback を使用できないと思います。
助言がありますか?