如果你希望某些东西在管理员和其他地方都可以使用,则应使用自定义模型形式。基本思想是重写该__init__方法以采用一个额外的参数-request-并将其存储为表单的属性,然后还重写save方法以在保存到数据库之前设置用户ID。
class MyModelForm(forms.ModelForm): def __init__(self, *args, **kwargs): self.request = kwargs.pop('request', None) return super(MyModelForm, self).__init__(*args, **kwargs) def save(self, *args, **kwargs): kwargs['commit']=False obj = super(MyModelForm, self).save(*args, **kwargs) if self.request:obj.user = self.request.user obj.save() return obj


