Я создаю веб-приложение списка Todo в Django. Я только учусь Django и очень начинающий, поэтому любая помощь очень ценится. Моя проблема:
Мое приложение позволит пользователям зарегистрироваться, и у них будет собственный профиль. Они могут создавать задачи и удалять их по своему усмотрению. Теперь я хочу представить атрибут всем пользователям, который называется «задачи». По сути, это целочисленное значение, которое будет отслеживать количество созданных ими задач с момента их регистрации. И каждый раз, когда пользователь добавляет новую задачу, я хочу, чтобы это значение увеличивалось на 1. Я просто не могу понять, как это реализовать.
Это мое models.py
from django.db import models
from django.contrib.auth.models import User
from PIL import Image
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(default="default.jpg", upload_to="profile_pics")
todos = models.IntegerField(default=0)
def __str__(self):
return f"{self.user.username} Profile"
def save(self):
super().save()
img = Image.open(self.image.path)
if img.height > 300 or img.width > 300:
output_size = (300, 300)
img.thumbnail(output_size)
img.save(self.image.path)
views.py
class TodoListView(ListView):
model = ToDo
template_name = "ToDo/home.html"
context_object_name = "todos"
ordering = ["-date_posted"]
class TodoCreateView(CreateView):
model = ToDo
fields = ["title"]
success_url = reverse_lazy("todo-home")
def form_valid(self, form):
form.instance.creator = self.request.user
user = User.objects.get(username=self.request.user.username)
user.profile.todos += 1
return super().form_valid(form)
В методе form_valid
я пытался увеличить это значение, но это не похоже на работу. Поскольку у меня есть доступ к панели администратора, я вижу, что при добавлении новой задачи число todos
не увеличивается.
Я ищу метод, который может увеличивать это значение, и я могу вызывать его удобно при необходимости. Кроме того, было бы очень полезно, если бы кто-то мог показать, как получить это значение todos
в шаблоне, чтобы я мог использовать это значение в Html. Благодаря.