tutorial - django forms widgets
Administrador de Django: ¿Cómo mostrar un campo marcado como editable=False ''en el modelo? (2)
Aunque un campo está marcado como ''editable=False''
en el modelo, me gustaría que la página de administración lo muestre. Actualmente oculta el campo por completo ... ¿Cómo se puede lograr esto?
Use los campos de solo lectura . Como tal (para django> = 1.2):
class MyModelAdmin(admin.ModelAdmin):
readonly_fields=(''first'',)
Actualizar
Esta solución es útil si desea mantener el campo editable en Admin pero no editable en ningún otro lado. Si desea mantener el campo no editable en todo momento, la answer @Till Backhaus es la mejor opción.
Respuesta original
Una forma de hacerlo sería usar un ModelForm
personalizado en admin. Este formulario puede anular el campo requerido para hacerlo editable. De este modo, conserva editable=False
cualquier otro lugar excepto Admin. Por ej. (Probado con 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)