Подтвердить что ты не робот

Как добавить 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')

Итак, мой вопрос: как я могу сделать встроенное поле только для чтения?

4b9b3361

Ответ 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

Это не позволит никому редактировать запись от администратора