使用Django admin的用户ForeignKey的默认值

Han*_*pan 19 django django-admin

author = models.ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)

有没有什么办法可以设置这个字段的默认值来自动选择登录用户?我知道你可以在save方法中执行此操作但我的客户端已经请求它在编辑时自动默认为登录用户以避免混淆.

本文将介绍如何在保存期间更新它,而不是在编辑时.

Dan*_*air 45

class MyModelAdmin(admin.ModelAdmin):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == 'author':
            kwargs['initial'] = request.user.id
        return super(MyModelAdmin, self).formfield_for_foreignkey(
            db_field, request, **kwargs
        )
Run Code Online (Sandbox Code Playgroud)

  • 只是旁注:我认为在一般情况下你不需要这行`return db_field.formfield(**kwargs)`. (2认同)