向Django查询添加值

2024-09-30 20:24:17 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有办法将非Django提供的值附加到查询中?在

例如,为了确定一个商店是否关闭,我可以运行一个名为get_closed_stores()的函数,该函数返回已关闭商店的列表。在

商店关闭

[00090, 00240, 00306, 00438, 03005, 05524]

太好了,现在我们有关店的店号了。让我们获取那些实际的存储对象。在

查询

^{pr2}$

我们现在有了QuerySet,但是我们绝对没有办法检测商店何时关闭,因为数据库不包含任何有关紧急关闭的信息,但是Sharepoint有。所以回到get_closed_stores()我们可以在商店编号旁边返回关闭日期,这样我们的关闭的商店列表(字典)看起来更像下面:

带日期的门店列表

{
    [00090, '1/28/19 5:00PM'], 
    [00240,'1/28/19 5:00PM'], 
    [00306, '1/28/19 5:00PM'], 
    [00438,'1/28/19 5:00PM'], 
    [03005,'1/28/19 5:00PM'], 
    [05524, '1/28/19 5:00PM']
}

既然日期和我的商店编号在一起,我就可以把它添加到我的查询集(理想情况下)并从前端访问它。在

因此,如果我使用与Django-ORM相关的任何东西,annotate()将是理想的,但是当涉及到“注入”外部数据时,我在寻找什么呢?在

我完全可以在我的前端从JS给每个商店打电话,但如果我能避开它,我宁愿不打电话


Tags: 对象django函数数据库列表getstores编号
1条回答
网友
1楼 · 发布于 2024-09-30 20:24:17

一个QuerySet本身并不是什么神奇或特殊的东西,最终它还是一本字典,所以我有了一个随机的想法,以我通常的方式附加到字典中,并且它起作用了。在

我的函数现在返回字典:

{ "store_number": "close_date" }

我的视图使用这个字典并使用键(存储编号)来查询数据库,然后将存储的关闭日期追加为store.close_date,只需说:

^{pr2}$

这很可能会改变,但我想让它接近最初的问题,以便将来的读者阅读。以下是我的观点。在

@login_required
def store_closures(request):
    store_list = get_closed_stores()
    store_nums = store_list.keys()
    closed_stores = Store.objects.filter(store_number__in=store_nums)
    for store in closed_stores:
        store.close_date = store_list["{:05d}".format(store.store_number)]
    return render(request, 'all_store_closures.html', {'closed_stores':closed_stores})

因此,如果要向queryset添加一个非Django值,只需使用附加到字典的标准方法。在

for obj in query:
    obj.desired_name = 'desired_value'

当然,可以使用模板中的{{ object.desired_name }}访问它。在

相关问题 更多 >