Django - 如何从多个模型中获取所需的数据

时间:2011-08-26 10:35:32

标签: django object view get models

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

我得到像这样的东西

第一个对象
阿拉木图之夜#some event_def
内部 - > Sary Arka #location
内部位置 - > Hall 7 #place
内部地点 - > 3月1991年0:00:00 #Event

第二个对象
阿拉木图之夜#some event_def
内部 - > Omega #location
内部位置 - > 2号厅#place
内部地点 - > 6月1991年0:00:00 #Event

我需要一个event_def并且在多个位置..etc

事件模型

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 :(得分:0)

您是说您希望能够获得多个活动地点?如果这样做,那么您的数据模型是错误的。对于具有多个位置的事件,您希望这样做:

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 %}