You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Admin后台保存模型时无法获取request.user问题排查

问题原因及解决方案

你把save_model方法写错位置了——这个方法是Django Admin的ModelAdmin类的钩子方法,并非模型类(Model)的方法,所以你写在Project模型里的代码根本不会被执行,自然无法获取到登录状态下的request.user。

修正步骤:

  1. 调整models.py:删除模型类中的save_model方法,仅保留字段定义:
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)
  1. 在admin.py中定义并注册ModelAdmin:将save_model方法移至ModelAdmin类内:
from django.contrib import admin
from .models import Project

class ProjectAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        if not obj.pk:  # 仅在首次创建对象时设置added_by
            obj.added_by = request.user
        super().save_model(request, obj, form, change)

admin.site.register(Project, ProjectAdmin)

完成上述修改后,在admin后台创建Project对象时,save_model会被正确触发,request.user即为当前登录的管理员用户,可正常赋值给added_by字段。

内容的提问来源于stack exchange,提问作者HBMCS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 07:45:56