Несмотря на то, что поле отмечено как 'editable=False'
в модели, я бы хотел, чтобы на странице администратора оно отображалось. Сейчас это поле полностью скрывает .. Как этого добиться?
Ответы:
Используйте поля только для чтения . Примерно так (для django> = 1.2):
class MyModelAdmin(admin.ModelAdmin):
readonly_fields=('first',)
fields
, но когда я добавил его, readonly_fields
он не отображался, пока я не добавил его в оба, а затем он появился в админке.
Обновить
Это решение полезно, если вы хотите, чтобы поле было редактируемым в Admin, но не редактировалось везде. Если вы хотите сохранить поле Нередактируемого в течение затем @Till Бакхаус ответ является лучшим вариантом.
Оригинальный ответ
Один из способов сделать это - использовать кастом ModelForm
в админке. Эта форма может заменить обязательное поле, чтобы сделать его редактируемым. Таким образом, вы сохраняете все, editable=False
кроме администратора. Например (проверено с 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)