Django - как получить необходимые данные из нескольких моделей - PullRequest
0 голосов
/ 26 августа 2011

event = Event.objects.filter (org = request.org) .select_related ("event_def", "location", "space")

и я получаю что-то вроде этого

1-й объект
алматинские ночи # кое-что event_def
внутри -> Сары Арка #расположение
внутри -> Зал 7 # место
внутри -> 3 мая 1991 г.0:00:00 # Событие

2-й объект
Алматинские ночи # некое событие_def
внутри -> Омега # местоположение
внутри помещения -> Зал 2 # место
внутри места-> 6 мая 1991 г.0:00:00 # Событие

мне нужен один event_def и внутри нескольких мест .. и т.д.

модель события

org = models.ForeignKey(Organization)
event_def = ChainedForeignKey(EventDef,
    chained_field = "org",
    chained_model_field = "org",
    show_all = False,
    auto_choose = True
)
location = ChainedForeignKey(Location,
    chained_field = "org",
    chained_model_field = "org",
    show_all = False,
    auto_choose = True
)
space = ChainedForeignKey(Space,
    chained_field = "location",
    chained_model_field = "location",
    show_all = False,
    auto_choose = True
)
time = models.DateTimeField()
enabled = models.IntegerField(choices = ns.FULL_ENABLE_STATUSES, default = ns.ENABLED_STATUS)
objects = EnableDisableManager()

1 Ответ

0 голосов
/ 26 августа 2011

Вы говорите, что хотите иметь возможность получить несколько мест для события? Если вы это сделаете, то ваша модель данных неверна. Чтобы событие имело несколько мест, вы хотите сделать это:

class Event(models.Model):
    org = ...
    event_def = ...
    space = ...
    ...

class Location(models.Model):
    event = models.ForeignKey(Event, related_name='locations')
    ...

И тогда в вашем шаблоне вы сможете сделать это:

{{ event }}
{% for location in event.locations %}
    {{ location }}
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...