私はDjangoモデルを持っています。このモデルには、外部キーowner
があり、このオブジェクトを所有しているユーザーを参照しています。 他のユーザーがこれらのオブジェクトを編集できるように、私は現在forms.ModelForm
を使用しています。Django ModelFormsフィールドを変更する
しかし、私は所有者と所有者だけが自分が所有するオブジェクトの所有者(所有者!:)を変更させたいと思っています。
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__
が呼び出される前に行われているように見えるモデル、上のフィールドを設定するためにいくつかのメタクラス-魔法を使用するので、これは、動作しません。したがって、私は次のことを試してみました。
誰でもこれのようなことをしましたか?
あなたはFolderオブジェクトを作成したユーザーに所有者を設定する必要がありますか? – San4ez