Данные приложения Django Todo из записи пользователя - PullRequest
0 голосов
/ 25 апреля 2019

Я новичок в Django и создаю приложение todo. Это почти сделано, но я не вижу введенные пользователем данные. У меня есть программа, которая показывает задачи TODO, и я могу войти в систему как любой пользователь и видеть чьи-либо задачи, но я хочу, чтобы у каждого пользователя был свой список задач в качестве личного приложения todo.

Вот мой код:

from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import User


class To_DO_Fun(models.Model):
    Task_Name = models.CharField(max_length=20, default='')
    Task_Text = models.TextField(max_length=450, default='')
    Task_Done = models.BooleanField(default=False)

    def __str__(self):
        return self.Task_Name + '  --- is ---  ' + str(self.Task_Done)


class user_TODO(models.Model):
    User_Name = models.ForeignKey(To_DO_Fun , User, on_delete=models.CASCADE)
from __future__ import unicode_literals
from django.shortcuts import render, redirect
from .models import To_DO_Fun, user_TODO #Class Name
from .forms import Form_todo, Form_Task #Form Name
from django.contrib import messages
from django.contrib.auth import login, logout, authenticate
from django.contrib.auth.forms import UserCreationForm
from django.http import HttpResponseRedirect
from django.contrib.auth.decorators import login_required



def HomeFun(request): #To view contents of the home page
    return render(request, "ToDo_Files/HomePage.html")


@login_required(login_url='Login-Page')
def Display_Page(request, User_Name_id):

    if request.method == "POST":

        form = Form_todo(request.POST or None)

        if form.is_valid():
            all_items = To_DO_Fun.objects.get(pk=User_Name_id)
            form.save()
            messages.success(request, ("Good Luck"))
            return render(request , 'ToDo_Files/Display_Page.html' , {'all_items': all_items} )

    else:
        form = Form_todo(request.POST or None)
        all_items = To_DO_Fun.objects.get(pk=User_Name_id)
        return render(request,'ToDo_Files/Display_Page.html',{'all_items': all_items} )




@login_required(login_url='Login-Page')
def remove(request, To_DO_Fun_id):
    item = To_DO_Fun.objects.get(pk=To_DO_Fun_id)
    item.delete()
    messages.success(request, ('Congratulations!!! You finished your task'))
    return redirect('Display-Page')




@login_required(login_url='Login-Page')
def data(request, To_DO_Fun_id):

        if request.method == "POST":
            item_all = To_DO_Fun.objects.get(pk=To_DO_Fun_id)
            form = Form_Task(request.POST, instance= item_all)

            if form.is_valid():
                form.save()
                urlstr = 'ToDo_Files/details/'
                messages.success(request, ("Item Updated"))
                return redirect('Display-Page')

        else:
            item_all = To_DO_Fun.objects.get(pk=To_DO_Fun_id)
            return render(request, 'ToDo_Files/details.html', {'item_all' : item_all})

        return redirect('Display-Page')



@login_required(login_url='Login-Page')
def Done_status(request, To_DO_Fun_id):
    item = To_DO_Fun.objects.get(pk=To_DO_Fun_id)
    item.Task_Done = True
    item.save()
    return redirect('Display-Page')

@login_required
def Pen_status(request, To_DO_Fun_id):
    item = To_DO_Fun.objects.get(pk=To_DO_Fun_id)
    item.Task_Done = False
    item.save()
    return redirect('Display-Page')







def Reg_Fun(request):
    if request.method == "POST":
        UserReg_Form = UserCreationForm(request.POST)

        if UserReg_Form.is_valid():
            UserReg_Form.save()
            messages.success(request, ("Welcome"))
            return redirect('Login-Page')
    else:
        UserReg_Form = UserCreationForm(request.POST)
        return render(request, "ToDo_Files/reg.html", {'UserReg_Form':UserReg_Form})

        return redirect('Login-Page')

1 Ответ

0 голосов
/ 25 апреля 2019

Добавьте отношение «многие к одному» из вашей модели задач в модель User.

в вашем models.py

class To_DO_Fun(models.Model):
    owner = models.ForeignKey(User, on_delete=models.CASCADE)
    Task_Name = models.CharField(max_length=20, default='')
    Task_Text = models.TextField(max_length=450, default='')
    Task_Done = models.BooleanField(default=False)

затем в вашем views.py вы можете получить все задачи, которые принадлежат пользователю, который в данный момент вошел в систему, используя фильтр.

tasks = To_DO_Fun.objects.filter(owner=request.user)
context = {'tasks': tasks}
return(request, "yourpage.html", context)

Я предлагаю вам взглянуть на Стиль кодирования Django Следование стилю кодирования улучшит согласованность и удобство чтения вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...