Ребята .чото я основательно запустался.Ситуация: У меня есть модель Task. В ней нет ничего особенного. Поля которые ок работают.
class Task(models.Model):
...
Дальше, когда в ней начали заполнятся некие данные, пришла задача допилить график Ганта.Как бы не суть в графике, а суть в том, что надо расширить модель, по возможности не выпиливая данные. Да и для работы остальных подсистем эти данные будут избыточны(да я знаю про defer).Само собой в голову пришло объединить две модели через OneToOneField.
class Gantt(models.Model):
task = models.OneToOneField('Task')
...
predecessors = models.ManyToManyField(Task, related_name='pre_task', blank=True, null=True)
...
Как видите, в модели Gantt есть так же и M2MField на модель, которая Parent.Собственно проблемы возникли в шаблоне. Так как подсистема строящая график нуждается в определенном форматирование приходящих данных, то я создаю JSON сам - руцями.И все шло ок до того момента, пока я не попытался получить список всех predecessors для конкретного Task.
[
{%for task in tasks%}
{
"id":"{{task.id}}",
...
,"predecessors": [
{%for p in task.gantt.predecessors.all%}
{
"task_id":"{{task.id}}",
"predecessor":"{{p.task_id}}"
}{% if not forloop.last%},{%endif%}
{%endfor%}
]
}{% if not forloop.last%},{%endif%}
{%endfor%}
]
Вот тут я и застрял:
{%for p in task.gantt.predecessors.all%}
Как-то оно нифига не возвращает. Выход я знаю - перенести predecessors в саму модель Task, но как помните мне лучше не удалять данные) Желательно)
Updated 19 April 2013, 13:30 by wdstrm.