回答:
読み取り専用フィールドを使用します。そうです(django> = 1.2の場合):
class MyModelAdmin(admin.ModelAdmin):
readonly_fields=('first',)
fields
、追加したときにreadonly_fields
両方に追加してから管理者に表示されるまで表示されませんでした。
更新
このソリューションは、フィールドをAdminで編集可能にしたいが、他の場所では編集できないようにする場合に役立ちます。フィールド全体を編集できないようにしたい場合は、@ Till Backhausの答えがより良いオプションです。
元の回答
これを行う1つの方法は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)