Если вы просто хотите установить поле «только для чтения» во встроенном режиме, вы можете сделать следующее:
class SomethingInline(admin.TabularInline):
model = Something
extra = 0
readonly_fields = ('field1',)
Если вы хотите сделать весь встроенный набор форм только для чтения в родительской форме, вы можете попробоватьthis:
class SomethingInline(admin.TabularInline):
model = Something
extra = 0
# Set all your fields here:
readonly_fields = ('field1', 'field2', 'field3')
# Or instead return all your fields here if this should be conditional:
def get_readonly_fields(self, request, obj=None):
return ('field1', 'field2', 'field3')
def has_add_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False
В последнем примере он по-прежнему будет отображать все значения для существующих встроенных элементов, но вы не можете добавлять / редактировать / удалять из интерфейса.это фактически сделает весь набор форм доступным только для чтения.
Примечание: я не переопределил has_change_permission()
для возврата False
, потому что это предотвратит показ существующих элементов.
Если вы не хотите указывать все свои поля вручную, внедрите get_readonly_fields()
одного из решений здесь: Администратор Django - сделайте все поля доступными только для чтения