【问题标题】:Default value for user ForeignKey with Django adminDjango 管理员用户 ForeignKey 的默认值
【发布时间】:2011-04-12 09:10:29
【问题描述】:
author = models.ForeignKey(User)

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

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

【问题讨论】:

  • 什么是“编辑时间”?我的意思是,文章在保存时已被编辑,不是吗?

标签: django django-admin


【解决方案1】:
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
        )

【讨论】:

  • 附注:我认为一般情况下您不需要return db_field.formfield(**kwargs) 这一行。
  • 我认为@naktinis 是对的,当你不使用它时,grappelli 的 autocomplete_lookup_fields 可以工作
  • 谢谢 - 我同意并删除了该行。
  • 如果在 Inline 类中使用该块可以正常工作,在 ModelAdmin 中使用它没有效果。
【解决方案2】:

如果您正在编辑的对象是新的,您可以覆盖模型的 Admin 部分以不显示作者,因为它应该设置为当前用户并且只有在您正在编辑对象时才会显示该字段?

您可以通过覆盖 ModelAdmin 的 get_form 方法来做到这一点。

【讨论】:

    猜你喜欢
    • 2015-09-10
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 2011-01-12
    • 1970-01-01
    • 2015-02-05
    相关资源
    最近更新 更多