繁体   English   中英

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

[英]Django admin model field set to current user

我有一个领域模型:

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

在我的管理员中:

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

在这里,添加MyModel时,我不需要admin中的created_by 我希望将其设置为当前用户,例如created_by = request.user

我怎样才能做到这一点?

谢谢

您已经设置了fields以便created_by不会以形式出现在Django admin中。

现在,您需要覆盖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()

为此,请覆盖save_model方法,并将created_by字段设置为当前用户。

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

    def save_model(self, request, obj, form, change):             
        if not change: 
        # can use this condition also to set 'created_by'    
        # if not getattr(obj, 'created_by', None):            
            obj.created_by = request.user
        obj.save()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM