Même si un champ est marqué comme 'editable=False'
dans le modèle, j’aimerais que la page d’administration l’affiche. Actuellement, cela cache complètement le champ. Comment cela peut-il être réalisé?
Utilisez les champs Readonly . Comme ça (pour django> = 1.2):
class MyModelAdmin(admin.ModelAdmin): readonly_fields=('first',)
Mettre à jour
Cette solution est utile si vous souhaitez conserver le champ modifiable dans Admin mais non modifiable partout ailleurs. Si vous voulez garder le champ non modifiable tout au long, la réponse de @Till Backhaus est la meilleure option.
Réponse originale
Une façon de procéder serait d’utiliser un ModelForm
personnalisé dans admin. Ce formulaire peut remplacer le champ requirejs pour le rendre modifiable. Vous conservez donc editable=False
partout ailleurs que Admin. Par exemple (testé avec 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)