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

时间:2011-04-12 09:10:29

标签: django django-admin

author = models.ForeignKey(User)

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

This article介绍如何在保存期间更新它,而不是在编辑时。

2 个答案:

答案 0 :(得分: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
        )

答案 1 :(得分:0)

如果您正在编辑的对象是新的,因为它应该设置为当前用户并且仅当您正在编辑对象时,您可以覆盖模型的管理部分以不显示作者吗?

您可以通过覆盖ModelAdmin的get_form方法来完成此操作。