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_fieldses 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 ModelFormDatei in admin zu verwenden. Dieses Formular kann das erforderliche Feld überschreiben, um es bearbeitbar zu machen. Dabei behalten Sie alles editable=Falseandere 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)