Antworten:
Verwenden Sie schreibgeschützte Felder . Wie so (für django> = 1.2):
class MyModelAdmin(admin.ModelAdmin):
readonly_fields=('first',)
fields
, aber als ich es hinzufügte, wurde readonly_fields
es nicht angezeigt, bis ich es beiden hinzufügte und es dann in admin erschien.
Aktualisieren
Diese Lösung ist nützlich, wenn Sie das Feld in Admin bearbeitbar, aber nicht überall bearbeitbar lassen möchten. Wenn Sie das Feld nicht editierbar halten wollen überall dann @Till Backhaus Antwort ist die bessere Option.
Ursprüngliche Antwort
Eine Möglichkeit, dies zu tun, besteht darin, eine benutzerdefinierte ModelForm
Datei in admin zu verwenden. Dieses Formular kann das erforderliche Feld überschreiben, um es bearbeitbar zu machen. Dabei behalten Sie alles editable=False
andere als Admin. Zum Beispiel (getestet mit 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)