привет!
начал делать сайт и возникло несколько вопросов по выборке объектов.
вот модели:
class Task(Named):
proj = models.ForeignKey(Proj)
type = models.ForeignKey(TaskType)
tags = models.ManyToManyField(Tag, null=True, blank=True)
description = models.TextField(blank=True)
TASK_RELATINGS = (
(0, 'косвенно зависит'),
(1, 'включает в себя'),
(2, 'является частью'),
(3, 'является следствием'),
(4, 'является предшедственником'),
)
class TaskRelating(Named):
task_from = models.ForeignKey("Task", related_name="from_task")
task_to = models.ForeignKey("Task", related_name="to_task")
description = models.TextField(blank=True)
tags = models.ManyToManyField(Tag, null=True, blank=True)
type = models.IntegerField(choices=TASK_RELATINGS)
class Proj(Named):
authors = models.ManyToManyField(User)
tags = models.ManyToManyField(Tag, null=True, blank=True)
specifications = models.TextField(blank=True)
проект, к которому прикреплены задачи посредством foreign key;
так же задачи могут быть связаны друг с другом через TaskRelating
1 вопрос:
в шаблоне необходимо вывести список проектов с задачами
сейчас я формирую этот список так:
projects = Proj.objects.filter(authors=user)
for project in projects:
project.tasks = Task.objects.filter(proj=project)
но чую, что это неправильно. как правильно это сделать, чтобы на выходе получилось, что у каждой записи в projects появилось поле tasks со списком связанных с ним задач?
2 вопрос:
каким образом можно выбрать задачи проекта, на которые ссылаются объекты класса TaskRelating с определённым значением type?
3 вопрос:
возможно ли выбрать задачи проекта, на которые
не ссылаются объекты TaskRelating?
4 вопрос:
есть ли в джанге возможность построения дерева ссылок заданной глубины?
т.е. допустим, у объекта project есть несколько задач, у которых есть несколько дочерних задач (дочерность определяется объектами task_relating) - можно ли построить запрос, чтобы создался объект примерно такого содержания?
project.tasks.tasks.task_relating_type…
т.е. первая задача проекта, содержащая первую подзадачу типа task_relating_type?
5 вопрос:
есть ли велосипед для вывода подобного рода (древообразных) структур?