1
Django의 관리 인터페이스에는이 양식에 액세스하는 기록 된 사용자가 일반 사용자 또는 관리자인지 여부에 따라 다른 방식으로 렌더링하려는 특정 모델의 양식이 있습니다. 그것은 하나의 거대한 것을 제외하고는 작동합니다 : 그것은 혼합됩니다. 예를 들어, 관리자가 편집 할 수있는 필드는 "일반"사용자로 로그인하기 직전에 읽기 전용입니다. 서버를 다시 시작한 후 바로 똑같은 작업을 시도해도 제대로 작동하고 모든 필드를 편집 할 수 있습니다. 나는 어쨌든 사용자의 세션이 혼란 스러울 것이라고 생각합니다. 어떻게 처리할까요? 앱의 admin.py에서Django 사용자 세션이 혼합되었습니다.
:
151 class AdminForm(ModelForm):
152 class Meta:
153 model = PromotionalSlot
154 exclude = ['deal']
155
156 class NormalUserForm(ModelForm):
157 class Meta:
158 model = PromotionalSlot
159 exclude = ['site']
160
161 class PromotionalSlotAdmin(admin.ModelAdmin):
162 def get_form(self, request, obj=None, **kwargs):
163 if request.user.is_superuser:
164 return AdminForm
165 else:
166 self.readonly_fields = ['start_date','end_date','level','city','status']
167 return NormalUserForm·
168
169 admin.site.register(models.PromotionalSlot, PromotionalSlotAdmin)
감사
가 ... 난 내가 list_display','exclude' 또는'list_filter '으로, 예를 들어, 동일한 일을 할 수 있다고 생각 : 이것은 당신이 스레드 안전 할 수있는 방법입니다 '맞지? – Rodrogo
Django는 admin 클래스에 많은 후크를 제공하며 문서 (https://docs.djangoproject.com/en/dev/ref/contrib/admin/)에서 해당 내용을 읽을 수 있습니다. 또한 매우 유용한 것은 소스 코드 (https://code.djangoproject.com/browser/django/trunk/django/contrib/admin/options.py)를 살펴 보는 것입니다. –