Даже если поле помечено как 'editable=False'
в модели, я бы хотел, чтобы страница администратора отображала его. В настоящее время он полностью скрывает поле. Как это можно достичь?
Django admin: как отобразить поле, помеченное как редактируемое = False 'в модели?
Ответ 1
Используйте Readonly Fields. Так же (для django >= 1.2):
class MyModelAdmin(admin.ModelAdmin):
readonly_fields=('first',)
Ответ 2
Обновление
Это решение полезно, если вы хотите, чтобы поле редактировалось в Admin, но не редактировалось везде. Если вы хотите, чтобы поле не редактировалось повсюду, лучшим вариантом является @Till Backhaus .
Оригинальный ответ
Один из способов сделать это - использовать пользовательский ModelForm
в admin. Эта форма может переопределить необходимое поле, чтобы сделать его доступным для редактирования. Таким образом, вы сохраняете editable=False
везде, кроме Admin. Напр. (тестируется с Django 1.2.3)
# models.py
class FooModel(models.Model):
first = models.CharField(max_length = 255, editable = False)
second = models.CharField(max_length = 255)
def __unicode__(self):
return "{0} {1}".format(self.first, self.second)
# admin.py
class CustomFooForm(forms.ModelForm):
first = forms.CharField()
class Meta:
model = FooModel
fields = ('second',)
class FooAdmin(admin.ModelAdmin):
form = CustomFooForm
admin.site.register(FooModel, FooAdmin)
Ответ 3
Ваши поля только для чтения должны быть в полях также:
fields = ['title', 'author', 'content', 'published_date', 'updated_date', 'created_date']
readonly_fields = ('published_date', 'updated_date', 'created_date')