Django условие UpdateView для form_valid () - PullRequest
0 голосов
/ 19 января 2020

Итак, вот что у меня есть:

#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() и как это сделать?

Любая помощь будет высоко ценится

...