Django管理模型字段设置为当前用户

发布于 2021-01-29 14:59:58

我有一个领域模型:

class MyModel(models.Model):
    name = models.CharField(max_length=50)
    created_by = models.ForeignKeyField(User)

在我的管理员中:

class MyModelAdmin(admin.ModelAdmin):
    list_display= ("name",)
    fields = ("name",)

在这里,我不想created_by在添加MyModel时在管理员中使用。我希望将其设置为当前用户,例如created_by = request.user

我怎样才能做到这一点?

谢谢

关注者
0
被浏览
92
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您已经设置fields好了,因此它created_by不会以Django管理员的形式出现。

    现在,您需要覆盖save_model,并在保存新对象之前设置用户。

    class MyModelAdmin(admin.ModelAdmin):
        fields = ("name",)
    
        def save_model(self, request, obj, form, change):
            if not change:
                # the object is being created, so set the user
                obj.created_by = request.user
            obj.save()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看