Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 5, 2010 00:16:57

unel
От:
Зарегистрирован: 2009-05-24
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

выборка объектов

привет!

начал делать сайт и возникло несколько вопросов по выборке объектов.

вот модели:

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 вопрос:
есть ли велосипед для вывода подобного рода (древообразных) структур?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version