Відповіді:
Використовуйте поля лише для читання . Ось так (для 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)