python - 将方法放在views.py中的类中
问题描述
我正在创建一个简单的待办事项应用程序,只是为了学习 Python 和 Django。我当前的代码:
def create_task(request):
# code for creating a task
def delete_task(request, task_id):
# code for deleting task
def show(request, task_id):
# show a task
def list(request):
# show list of tasks
def create_sub_task(request):
# code for creating a sub_task
def delete_sub_task(request, sub_task_id):
# code for deleting sub_task
def flip_sub_task_completed(request, sub_task_id)
# make a sub_task completed/uncompleted
如您所见,任务有子任务。这工作正常。但我认为最好将Tasks和SubTasks分开,并为它们创建2个类。会更好吗?我将如何继续实现这一目标?我需要如何更改urlpatterns = [
才能使其正常工作?非常感谢!
编辑:models.py:
class Task(models.Model):
description = models.CharField(max_length=250)
user = models.ForeignKey(User, on_delete=models.CASCADE)
class SubTask(models.Model):
description = models.CharField(max_length=250)
completed = models.BooleanField(default=False)
task = models.ForeignKey(Task, on_delete=models.CASCADE)
解决方案
为子任务创建一个单独的模型可能不是更好——而是parent
为你的模型添加一个外键Task
;与父母的任务是子任务:
class Task(models.Model):
# ...
parent = models.ForeignKey('self', related_name='subtasks')
如果您需要多层次的层次结构,我建议您研究 Django-Treebeard 或 Django-MPTT,它们可用于对 Django 模型中的树进行高效建模。
推荐阅读
- typo3 - TYPO3:“access_group”字段是做什么用的?
- python - Python,如何避免对低于当前级别的日志记录语句进行参数评估
- javascript - 有没有办法使用 Puppeteer 在 React Dropzone 中上传文件?
- laravel - 表关系以及如何在 laravel 控制器中使用它
- android - 是否可以以 60 fps 播放 arcore?
- javascript - AngularJS - 如何用 2 个参数构造端点的 url
- amazon-web-services - 在 Docker 容器中传递 AWS CodeBuild IAM 角色 [无法找到凭证]
- postgresql - 如何在 Postgres 中创建一个包含数组的列?
- visual-studio - Visual Studio 弹出字体更改?
- java - 如何知道用户何时完成输入?