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

gam*_*mer 2 python django admin

我有一个带有字段的模型:

class MyModel(models.Model):
    name = models.CharField(max_length=50)
    created_by = models.ForeignKeyField(User)
Run Code Online (Sandbox Code Playgroud)

在我的管理员中:

class MyModelAdmin(admin.ModelAdmin):
    list_display= ("name",)
    fields = ("name",)
Run Code Online (Sandbox Code Playgroud)

created_by添加MyModel时,我不想在管理员中使用.我想将它设置为当前用户created_by = request.user

我怎样才能做到这一点?

谢谢

Ala*_*air 7

您已设置fieldscreated_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()
Run Code Online (Sandbox Code Playgroud)