Відповіді:
Використовуйте поля лише для читання . Ось так (для django> = 1,2):
class MyModelAdmin(admin.ModelAdmin):
readonly_fields=('first',)
fields, але коли я додав його, readonly_fieldsвін не з'явився, поки я не додав його до обох, а потім він з'явився в адміністраторі.
Оновлення
Це рішення корисне, якщо ви хочете, щоб поле залишалося редагованим в адміністраторі, але не можна редагувати скрізь. Якщо ви хочете зберегти поле Нередагована в протягом потім @Till Бакхаус відповідь є найкращим варіантом.
Оригінальний відповідь
Одним із способів зробити це буде використання користувацького ModelFormв адміністраторі. Ця форма може замінити необхідне поле, щоб зробити його доступним для редагування. Тим самим ви зберігаєте editable=Falseвсюди, крім адміністратора. Наприклад, (перевірено за допомогою 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)