'editable=False'
모델에 필드가 표시되어 있어도 관리자 페이지에 표시하고 싶습니다. 현재는 필드를 완전히 숨기고 있습니다. 어떻게 이것을 달성 할 수 있습니까?
답변:
읽기 전용 필드를 사용합니다 . 그렇게 (django> = 1.2) :
class MyModelAdmin(admin.ModelAdmin):
readonly_fields=('first',)
fields
,하지만 난에 추가 할 때 readonly_fields
표시하지 않았다 그것은 둘 다에 추가 한 후이 관리자에 등장 할 때까지.
최신 정보
이 솔루션은 Admin에서 필드를 편집 가능하게 유지하고 다른 곳에서는 편집 할 수없는 경우에 유용합니다. 이 필드 편집 할을 유지하려면 걸쳐 다음 @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)