我正在 Django 中制作一个待办事项列表 Web 应用程序。我刚刚学习 Django,而且还是个新手,所以非常感谢任何帮助。我的问题:
我的应用程序将允许用户注册,并且他们可以拥有自己的个人资料。他们可以根据需要创建待办事项并删除它们。现在,我想向所有用户介绍一个名为“todos”的属性。这基本上是一个整数值,用于跟踪他们自注册以来创建的待办事项数量。每次用户添加一个新任务时,我都希望这个值增加 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)
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
在该form_valid方法中,我尝试增加该值,但这似乎不起作用。由于我可以访问管理面板,因此我可以看到添加新任务时,计数todos不会增加。
我正在寻找一种可以增加该值的方法,并且可以在需要时方便地调用它。todos此外,如果有人可以展示如何在模板中获取此计数,以便我可以在 Html 中使用此值,那将非常有帮助。谢谢。
您缺少 form_valid 方法中的 save 方法
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
user.profile.save()
return super().form_valid(form)
Run Code Online (Sandbox Code Playgroud)
如果您希望从模板中访问这些内容,则可以user.profile.todos直接使用。EG{{ user.profile.todos }}或{% if user.profile.todos > 1 %}More than one{% endif %}
| 归档时间: |
|
| 查看次数: |
3705 次 |
| 最近记录: |