Django:保存模型时填充用户ID

我有一个带有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

以上是 Django:保存模型时填充用户ID 的全部内容, 来源链接: utcz.com/qa/402550.html

回到顶部