Django UserPassesTestMixin вызывает дублирование sql-запросов
Итак, в моем проекте Django у меня есть представление на основе классов, которое использует UserPassesTestMixin
.
Внутри него я использую test_func
для проверки принадлежности объекта пользователю (или администратору).
Но я вижу, что происходит дублирование SQL-запросов.
Я подозреваю, что это происходит из-за test_func, который имеет self.get_object
.
Посоветуйте, как избежать этого дублирования.
Вот мой взгляд:
class PostUpdateView(UserPassesTestMixin, UpdateView):
permission_denied_message = "Access for staff or profile owner!"
def test_func(self):
return (
self.request.user.is_staff
or self.request.user.pk == self.get_object().author_id
)
model = Post
queryset = Post.objects.all().select_related("author")
form_class = UpdatePostForm
template_name = "diary/post-update.html"
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)