1
Djangoの管理インターフェースには、このフォームにアクセスするログインユーザーが通常のユーザーか管理者かによって、異なる方法でレンダリングしたい特定のモデルのフォームがあります。 1つの巨大なものを除いて見つけることができます:それは混在します。たとえば、管理者が編集可能にするフィールドは、「通常」のユーザーとしてログインする直前に読み取り専用です。サーバを再起動した直後にまったく同じことを試しても、うまく動作し、すべてのフィールドが編集可能です。私は何とかユーザーのセッションが混ざり合っていると思います。これをどう扱う?アプリケーションの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/)を参照してください。また、ソースコードを見てみると、非常に便利です。 –