我想将第一次保存模型的用户存储在该模型的某个字段中.这就是我的全部

models.py:

from django.conf import settings
class Project(models.Model):
[...]
    added_by = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True, on_delete=models.PROTECT)

    def save_model(self, request, obj, form, change):
        if not obj.pk:
            obj.added_by = request.user
        super().save_model(request, obj, form, change)

settings.py:

AUTH_USER_MODEL = 'auth.User'

request.user似乎总是空的(我作为root登录到/admin).我错过了什么?

推荐答案

这不属于model,但在ModelAdmin:

from django.contrib import admin


@admin.register(ModelAdmin)
class ProjectAdmin(admin.ModelAdmin):
    # …

    def save_model(self, request, obj, form, change):
        if obj._state.adding:
            obj.added_by = request.user
        return super().save_model(request, obj, form, change)

Python相关问答推荐

在函数内部使用eval(),将函数的输入作为字符串的一部分

通过优化空间在Python中的饼图中添加标签

从收件箱中的列中删除html格式

如何请求使用Python将文件下载到带有登录名的门户网站?

如何在Python脚本中附加一个Google tab(已经打开)

在Python argparse包中添加formatter_class MetavarTypeHelpFormatter时, - help不再工作""""

递归访问嵌套字典中的元素值

Django admin Csrf令牌未设置

使用特定值作为引用替换数据框行上的值

寻找Regex模式返回与我当前函数类似的结果

ruamel.yaml dump:如何阻止map标量值被移动到一个新的缩进行?

使用__json__的 pyramid 在客户端返回意外格式

Python将一个列值分割成多个列,并保持其余列相同

如何在验证文本列表时使正则表达式无序?

有没有办法在不先将文件写入内存的情况下做到这一点?

Python如何导入类的实例

Python日志(log)库如何有效地获取lineno和funcName?

删除Dataframe中的第一个空白行并重新索引列

Pandas 删除只有一种类型的值的行,重复或不重复

如何在基于时间的数据帧中添加计算值