У меня есть измененная административная форма, в которую я добавил поле, которое будет изменять значения родительского объекта текущей модели.Теперь, в зависимости от пользователя, мне нужно
- изменить набор запросов этого дополнительного поля
- установить другое поле как доступное только для чтения (или лучше даже полностью его скрыть)
В основном мой код ниже работает так, как я ожидал.Суперпользователь получает весь набор запросов, а другое поле не только для чтения.Все остальные пользователи получают ограниченный набор запросов, а другое поле является только для чтения.Однако, как только я открываю этот сайт в другом браузере и, не являясь суперпользователем, даже суперпользователь получает тот же результат, что и не суперпользователь.Похоже, Django как-то кеширует результат?Если я помещу некоторые операторы print в условные ветви, они будут напечатаны правильно.Таким образом, метод по-прежнему вызывается каждый раз и, кажется, все еще выполняет эти шаги.Только с неверным результатом.
Это проблема кеширования?Я делаю что-то совершенно не так?Может ли это быть ошибкой на тестовом сервере django?
def get_form(self, request, obj=None, **kwargs):
form = super(MultishopProductAdmin, self).get_form(request, obj, **kwargs)
if obj is not None:
form.declared_fields['categories'].initial = obj.product.category.all()
if not request.user.is_superuser:
user_site = request.user.get_profile().site
form.declared_fields['categories'].queryset = Category.objects.filter(site__id=user_site.id)
self.readonly_fields = ('virtual_sites', )
if obj is not None:
form.declared_fields['categories'].initial = obj.product.category.filter(site__id=user_site.id)
return form