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

Posted

技术标签:

【中文标题】Django - 如何从多个模型中获取所需的数据【英文标题】:Django - how to get needed data from multiple models 【发布时间】:2011-11-04 10:18:57 【问题描述】:

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

我得到这样的东西

第一个对象 阿拉木图之夜#some event_def 内部-->Sary Arka #location 内部位置-->Hall 7 #place inside place-->3 мая 1991 г. 0:00:00 #事件 第二个对象 阿拉木图之夜#some event_def 内部-->欧米茄 #location 内部位置-->Hall 2 #place inside place-->6 мая 1991 г. 0:00:00 #事件

我需要一个 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()

【问题讨论】:

请问您可以在这里发布您的Event 型号代码吗? 如果 org 和 location 是变量,它们不应该用引号引起来。目前您将它们用作字符串。 【参考方案1】:

您是说您希望能够为一个活动获取多个位置吗?如果你这样做了,那么你的数据模型是错误的。对于有多个地点的活动,您需要这样做:

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 %

【讨论】:

您可以通过在 () 中列出字段名来跟踪与 select_related() 的特定关系,请参阅文档中 select_related() 部分的底部。 没问题。如果您真的只关心获取几个 FK 字段的相关模型,它确实可以帮助减少具有大量 FK 字段的模型的查询时间。 您好 Moncler - 在 Stack Overflow 上发布您找到的答案是一种很好的做法。回答您自己的问题,以便将来发现此问题的其他人有所帮助! 我使用了 Dajax(Dajaxice) 库,与本题无关 我无法回答自己的问题,我的名声很小))

以上是关于Django - 如何从多个模型中获取所需的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何从这种错误的 JSON 格式中获取所需的数据?

在 Magento 中,块如何从模型中获取数据?

如何从另一个表中获取数据并插入到 EF Core 中所需的表中

如何从其他表中获取所需的列

从多个模型中获取信息时优化 django 查询

Django - 获取反转url所需的参数名称