我有一个带有created_by字段的模型,该模型链接到标准Django用户模型。保存模型时,我需要使用当前用户的ID自动填充它。我无法在Admin层执行此操作,因为该网站的大部分内容都不会使用内置的Admin。谁能建议我该怎么做?
如果你希望某些东西在管理员和其他地方都可以使用,则应使用自定义模型形式。基本思想是重写该__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