изменение представления на основе классов для добавления данных вошедшему в систему пользователю - PullRequest
0 голосов
/ 13 февраля 2020

эй, я пытаюсь изменить мой todoapp, чтобы он был указан пользователем c с точки зрения доступа к спискам задач, но я столкнулся с проблемой в изменении моих представлений на основе классов для достижения sh этого , например, для обеспечения что, когда я создаю задачу, она добавляется в список зарегистрированных пользователей , вот мой текущий код

models.py

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

from django.utils import timezone
import datetime

# Create your models here.

class TodoList(models.Model):
    user = models.ForeignKey(
        User, on_delete=models.CASCADE, related_name="todolist", null=True)
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name


class Todo(models.Model):
    todolist = models.ForeignKey(
        TodoList, on_delete=models.CASCADE)
    name = models.CharField(max_length=100, default='unamedTodo')
    description = models.CharField(max_length=200)
    Todo_date = models.DateTimeField('Todo Date')
    pub_date = models.DateTimeField('Date Published')

    def get_absolute_url(self):
        return reverse('ToDo:detail', kwargs={'id': self.id})

    def get_back_home(self):
        return reverse('ToDo:todos', kwargs={})

    def go_to_update(self):
        return reverse('ToDo:update', kwargs={'id': self.id})

    def go_to_delete(self):
        return reverse('ToDo:delete', kwargs={'id': self.id})

views.py

from .forms import TodoForm
from .models import Todo
from django.template import loader
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
from django.contrib.auth.forms import UserCreationForm


from django.views.generic import (
    CreateView,
    ListView,
    DetailView,
    UpdateView,
    DeleteView
)
from django.urls import reverse, reverse_lazy
from django.shortcuts import render, get_object_or_404


# Create your views here.
@method_decorator(login_required, name='dispatch')
class TodoListView(ListView):
    template_name = 'ToDo/todo_list.html'
    queryset = Todo.objects.all()


@method_decorator(login_required, name='dispatch')
class TodoDetailView(DeleteView):
    template_name = 'ToDo/todo_detail.html'
    queryset = Todo.objects.all()

    def get_object(self):
        id_ = self.kwargs.get("id")
        return get_object_or_404(Todo, id=id_)


@method_decorator(login_required, name='dispatch')
class TodoCreateView(CreateView):
    template_name = 'ToDo/todo_create.html'
    form_class = TodoForm
    queryset = Todo.objects.all()


@method_decorator(login_required, name='dispatch')
class TodoUpdateView(UpdateView):
    template_name = 'ToDo/todo_create.html'
    form_class = TodoForm
    queryset = Todo.objects.all()

    def get_object(self):
        id_ = self.kwargs.get("id")
        return get_object_or_404(Todo, id=id_)


@method_decorator(login_required, name='dispatch')
class TodoDeleteView(DeleteView):
    template_name = 'ToDo/todo_delete.html'
    #queryset = Todo.objects.all()

    def get_object(self):
        id_ = self.kwargs.get('id')
        return get_object_or_404(Todo, id=id_)

    def get_success_url(self):
        return reverse('ToDo:todos')


# signup view
class SignUp(CreateView):
    template_name = 'ToDo/registration/signup.html'
    form_class = UserCreationForm
    success_url = reverse_lazy('login')

...