我有一个 Django 模型,它有一个外键owner
,指的是拥有这个对象的用户。为了让其他用户编辑这些对象,我目前使用 a 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__
调用我的子类之前完成的。
有人做过这样的事情吗?