Même si un champ est marqué comme 'editable=False'
dans le modèle, j'aimerais que la page d'administration l'affiche. Actuellement, il cache complètement le champ. Comment cela peut-il être réalisé?
Réponses
Trop de publicités?Utilisez les champs en lecture seule . Comme si (pour django> = 1.2):
class MyModelAdmin(admin.ModelAdmin):
readonly_fields=('first',)
Mise à jour
Cette solution est utile si vous souhaitez conserver le champ modifiable dans l'Admin, mais non modifiable partout ailleurs. Si vous voulez garder le champ non modifiable tout au long de puis @Jusqu'à Backhaus' réponse est la meilleure option.
Réponse Originale À Cette Question
Une façon de le faire serait d'utiliser une coutume ModelForm
dans l'admin. Ce formulaire peut remplacer le champ nécessaire pour le rendre modifiable. Vous pouvez ainsi conserver editable=False
partout ailleurs, mais 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)