Помещение методов в класс в views.py - PullRequest
0 голосов
/ 18 июня 2019

Я создаю простое приложение todo только для изучения 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

Как видите, у задачи есть подзадачи.Это работает нормально.Но я думаю, что было бы лучше разделить Задачи и Подзадачи и создать для них 2 класса.Будет ли это лучше?И как бы я продолжил достигать этого?Как мне изменить мой urlpatterns = [, чтобы он работал?Большое спасибо!

edit: 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)

1 Ответ

1 голос
/ 18 июня 2019

Вероятно, не лучше создать отдельную модель для подзадач - вместо этого добавьте parent внешний ключ к вашей Task модели;Задачи с родителями - это подзадачи:

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

Если вам нужна многоуровневая иерархия, я предлагаю изучить Django-Treebeard или Django-MPTT, которые можно использовать для эффективного моделирования деревьев в моделях Django.

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