1
在Django的管理界面中,有一種表單,我希望以不同的方式呈現特定模型,具體取決於訪問此表單的用戶是普通用戶還是管理員。除了一件巨大的事情之外,它正在發現:它變得混雜。例如,應該可以由管理員編輯的字段是隻讀的,在我之前已經以「普通」用戶身份登錄之後。如果我在重新啓動服務器後立即嘗試完全相同的事情,可以正常工作,並且所有字段都是可編輯的。我猜這個用戶的會話會混淆不清。如何處理這個?Django用戶會話混合。
這裏是啥子我:
在應用的admin.py:
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在管理類中提供了許多掛鉤,你可以在文檔中閱讀(https://docs.djangoproject.com/en/dev/ref/contrib/admin/)。我發現還非常有用的是查看源代碼:https://code.djangoproject.com/browser/django/trunk/django/contrib/admin/options.py。 –