ownerこのオブジェクトを所有するユーザーを参照する外部キーを持つDjangoモデルがあります。他のユーザーがこれらのオブジェクトを編集できるようにするために、私は現在、を使用してforms.ModelFormいます。これはこれまでのところ正常に機能します。
しかし、私は所有者と所有者だけが所有するオブジェクトの所有者を変更できるようにしたいことを知っています(なんと所有権です!:)。したがって、私は次のことを試みました:
class FolderForm(forms.ModelForm):
    def __init__(self, user, *args, **kwargs):
        if kwargs.get("instance", False):
            if user == kwargs["instance"].owner:
                self._meta.fields += ("owner",)
        super(FolderForm, self).__init__(*args, **kwargs)
    class Meta:
        model = Folder
        fields = (
            "name",
            "description",
        )
ただし、Djangoはメタクラスマジックを使用してモデルのフィールドを設定するため、これは機能しません。これは、サブクラス__init__が呼び出される前に行われるようです。
誰かがこのようなことをしたことがありますか?