[django] Django 관리자 : 모델에서 editable = False ‘로 표시된 필드를 표시하는 방법은 무엇입니까?

'editable=False'모델에 필드가 표시되어 있어도 관리자 페이지에 표시하고 싶습니다. 현재는 필드를 완전히 숨기고 있습니다. 어떻게 이것을 달성 할 수 있습니까?



답변

읽기 전용 필드를 사용합니다 . 그렇게 (django> = 1.2) :

class MyModelAdmin(admin.ModelAdmin):
    readonly_fields=('first',)


답변

최신 정보

이 솔루션은 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)


답변

읽기 전용 필드는 다음 필드에도 있어야합니다.

fields = ['title', 'author', 'content', 'published_date', 'updated_date', 'created_date']
readonly_fields = ('published_date', 'updated_date', 'created_date')


답변