Итак, вот что у меня есть:
#models.py
class Story(models.Model):
title = models.CharField(max_length=150)
story = models.TextField()
page = models.ForeignKey(Page, on_delete=models.CASCADE)
#views.py
class StoryUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
model = Story
fields = ['title', 'content']
def form_valid(self, form):
story = self.get_object()
if self.request.user in User.objects.filter(groups__name=story.page.name):
return super().form_valid(form)
else:
pass
def test_func(self):
story = self.get_object()
if self.request.user in User.objects.filter(groups__name=story.page.name):
return True
return False
#urls.py
path('edit_story/<int:pk>', StoryUpdateView.as_view(), name='update-story')
здесь я хочу дать доступ к этому представлению обновления группе пользователей. Поэтому мой запрос должен выглядеть следующим образом: если текущий пользователь входит в группу User.objects.filter(groups__name=story.page.name)
, то у него должен быть доступ для обновления истории.
Теперь я считаю, что мои методы form_valid () и test_fun c () неверны. Но я не могу найти способ сделать это правильно. Какой лог должен быть c для этого? Кроме того, чтобы получить историю, что я должен делать? Я делаю story = self.get_object()
как здесь, что, возможно, не работает, или мне нужно использовать метод get_object_or_404()
и как это сделать?
Любая помощь будет высоко ценится