Требуется ли параметр editable=False?
Я разрабатываю модель, единственными действиями, которые можно выполнить над ее экземпляром, являются просмотр и удаление.
Более того, все эти действия должны происходить в StackedInline, который привязан к классу ModelAdmin другой модели.
Пример модели:
class IncludingModel(models.Model):
...
class ReadAndDeleteOnlyModel(models.Model):
field1 = models.TextField(verbose_name="First field", editable=False)
field2 = models.TextField(verbose_name="Second field", editable=False)
including_model_instance = models.ForeignKey(IncludingModel, related_name="read_and_delete_only_instances")
Пример администратора
class ReadAndDeleteOnlyModelInline(admin.StackedInline):
model = ReadAndDeleteOnlyModel
readonly_fields = ("field1", "field2")
def has_add_permission(self, request, obj):
return False
@admin.register(IncludingModel)
class IncludingModelAdmin(admin.ModelAdmin)
inlines = (ReadAndDeleteOnlyModelInline,)
Взаимодействие с экземплярами ReadAndDeleteOnlyModel происходит только в IncludingModelAdmin. После удаления editable = False мои поля по-прежнему доступны только для чтения, поскольку я указал их в readonly_fields. В связи с этим возникает вопрос, нужен ли editable = False в моем случае?
По умолчанию параметр editable имеет значение True. Если вы измените его на False, поле не будет отображаться в админке или любой другой ModelForm. Они также будут пропущены при проверке модели.