Как добавить readonly inline в django admin
Я использую django 1.4, и у меня есть много многого, поэтому при создании сайта admin я хотел бы добавить это поле как встроенный, вот какой-то код:
class SummaryInline(admin.TabularInline):
model = ParserError.summaries.through
class MyClassAdmin(admin.ModelAdmin):
list_display = ('classifier', 'name', 'err_count', 'supported')
fields = ('classifier', 'name', 'err_count', 'err_classifier', 'supported')
inlines = (SummaryInline,)
readonly_fields = ('classifier', 'err_count')
Итак, мой вопрос: как я могу сделать встроенное поле только для чтения?
Ответы
Ответ 1
Через некоторое время, пытаясь найти имя, я понял, что этот ответ, поэтому я проверил имена в self.opts.local_fields
и нашел имя среднего и добавили его в readonly_fields
, установив can_delete
to False.
class SummaryInline(admin.TabularInline):
model = ParserError.summaries.through
readonly_fields = ('myclasssummary',)
can_delete = False
довольно простой, но занял некоторое время, поэтому я понял, что это хорошая идея добавить его здесь.
Ответ 2
Кроме того, если вы не хотите добавлять/удалять строки, вы можете добавить эти определения.
def has_add_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False
Ответ 3
Спасибо, Кевал Прабху
class UnitsInline(admin.TabularInline):
model = Units
extra = 0
verbose_name = 'Units'
verbose_name_plural = 'Units of company'
**def has_add_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False**
Ответ 4
Вы можете сделать весь inline только для чтения, добавив:
class UnitsInline(admin.TabularInline):
def has_change_permission(self, request, obj=None):
return False
Это не позволит никому редактировать запись от администратора