Django在表格行视图中禁用编辑(但允许添加)
我想禁用编辑特定Tablerinline实例中的所有对象,同时仍然允许添加和编辑父模型 我有一个简单的设置:Django在表格行视图中禁用编辑(但允许添加),django,django-admin,Django,Django Admin,我想禁用编辑特定Tablerinline实例中的所有对象,同时仍然允许添加和编辑父模型 我有一个简单的设置: class SuperviseeAdmin(admin.TabularInline): model = Supervisee class SupervisorAdmin(admin.ModelAdmin): inlines = [SuperviseeAdmin] admin.site.register(Supervisor, SupervisorAdmin) 我尝试将has
class SuperviseeAdmin(admin.TabularInline):
model = Supervisee
class SupervisorAdmin(admin.ModelAdmin):
inlines = [SuperviseeAdmin]
admin.site.register(Supervisor, SupervisorAdmin)
我尝试将has\u change\u permission
函数添加到superveeadmin
中,该函数无条件返回False
,但没有效果
我曾尝试在superveeadmin
中设置actions=None
,但没有效果
我可能忽略了什么可以让它工作?请参阅此解决方案:
class SuperviseeAdmin(admin.TabularInline):
model = Supervisee
def __init__(self, *args, **kwargs):
super(SuperviseeAdmin, self).__init__(*args, **kwargs)
self.list_display_links = (None, )
重写get_readonly_字段方法:
def get_readonly_fields(self, request, obj=None):
if obj: # obj is not None, so this is an edit
return ['name1',..] # Return a list or tuple of readonly fields' names
else: # This is an addition
return []
您可以尝试创建一个单独的内联类(请参阅),该类使用自定义的
ModelForm
,您可以自定义clean
方法,以便在尝试更新时引发错误:
from django.contrib import admin
from django.core.exceptions import ValidationError
from django.forms import ModelForm
from myapp.models import Supervisee
class SuperviseeModelForm(ModelForm):
class Meta(object):
model = Supervisee
# other options ...
def clean(self):
if self.instance.pk:
# instance already exists
raise ValidationError('Update not allowed')
# instance doesn't exist yet, continue
return super(SuperviseeModelForm, self).clean()
class SuperviseeInline(admin.TabularInline):
model = Supervisee
form = SuperviseeModelForm
class SuperviseeAdmin(admin.ModelAdmin):
inlines = [SuperviseeInline]
用户django admin内置函数具有_change_permission()并返回false以限制对象编辑视图
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)
是否已将更改权限添加到中继(适用于1.5版本)!你曾经解决过这个问题吗?我没有,但我也没有使用Django的新版本重新访问。所以@Ahmet Navrus在1.5版本中的评论可能是相关的。有人能解决这个问题吗?