Django 在 TabularInline View 中禁用编辑(但允许添加)

标签 django django-admin

我想禁用编辑特定 TabularInline 实例中的所有对象,同时仍然允许添加并且仍然允许编辑父模型。

我有这个微不足道的设置:

class SuperviseeAdmin(admin.TabularInline):
  model = Supervisee

class SupervisorAdmin(admin.ModelAdmin):
  inlines = [SuperviseeAdmin]

admin.site.register(Supervisor, SupervisorAdmin)

我试过添加 has_change_permission函数到 SuperviseeAdmin返回 False无条件地,但它没有效果。

我试过设置 actions = NoneSuperviseeAdmin但它没有效果。

我可能会忽略什么才能使其发挥作用?

最佳答案

用户 django admin 内置函数 has_change_permission() 并返回 false 以限制对象编辑 View 。

class SuperviseeAdmin(admin.TabularInline):
  model = Supervisee

  def has_change_permission(self, request):
      return False

class SupervisorAdmin(admin.ModelAdmin):
  inlines = [SuperviseeAdmin]

admin.site.register(Supervisor, SupervisorAdmin)

关于Django 在 TabularInline View 中禁用编辑(但允许添加),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2951781/

相关文章:

javascript - 加载时的 Django 微调器 (spin.js)

Django:覆盖 base_site.html

django - 仅针对某些模型覆盖 Django 管理change_list_results.html

python - Django 管理员 : use checkboxes in list view in list_filter()

Django 标记和 Django 管理

python - Django 1.8.3 - 使用相关对象进行模型字段验证

python - django connec mysql --_mysql_exceptions.OperationalError : (2006, <NULL>)

django - 测试时如何访问 request.user?

python - Django 表单输入字段样式

python - Django Rest Framework中的AuthToken : non_field_errors