разрешения в django с методом отправки - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь ограничить пользователей, чтобы они могли просматривать только те задачи, которые они создали, используя метод диспетчеризации, но я попробовал подход, описанный ниже, но все же я вижу, что все задачи появляются под пользователем, который их не создал

пользовательская модель пользователя

from django.db import models

from django.contrib.auth.models import AbstractUser

# Create your models here.


class CustomUser(AbstractUser):
    profession = models.CharField(null=True, blank=True, max_length=30)

модель задачи

from django.db import models
from django.contrib.auth import get_user_model
from django.urls import reverse

# Create your models here.


class Todo(models.Model):
    title = models.CharField(max_length=120)
    description = models.TextField(max_length=320)
    to_be_done = models.DateTimeField(null=False)
    date_posted = models.DateTimeField(auto_now_add=True)
    user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('todo_detail', args=[str(self.id)])

просмотр списка задач todos

class TodoListView(LoginRequiredMixin, ListView):
    model = Todo
    template_name = 'todo_list.html'
    login_url = 'login'

    def dispatch(self, request, *args, **kwargs):
        objects = self.objects.filter(user=self.request.user)
        for obj in objects:
            if obj.user != self.request.user:
                raise PermissionDenied
            return super().dispatch(request, *args, **kwargs)

любые идеи о том, как я могу приспособиться для реализации вышеупомянутой задачи

1 Ответ

1 голос
/ 23 марта 2020

Попробуйте что-то вроде этого:

class TodoListView(LoginRequiredMixin, ListView):
    model = Todo

    def get_queryset(self):
        qs = Todo.objects.filter(user=self.request.user)
        return qs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...