widgets tutorial form fields example actions django django-admin

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)