首页 > 解决方案 > 将方法放在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)

标签: pythondjango

解决方案


为子任务创建一个单独的模型可能不是更好——而是parent为你的模型添加一个外键Task;与父母的任务是子任务:

class Task(models.Model):
    # ...
    parent = models.ForeignKey('self', related_name='subtasks')

如果您需要多层次的层次结构,我建议您研究 Django-Treebeard 或 Django-MPTT,它们可用于对 Django 模型中的树进行高效建模。


推荐阅读