gpt4 book ai didi

python - 使用 Django 1. 7's ` 预取`

转载 作者:行者123 更新时间:2023-11-28 19:19:34 26 4
gpt4 key购买 nike

我正在尝试使用新的 Prefetch 解决问题,但我不知道如何使用它。

我有这些模型:

class Desk(django.db.models.Model):
pass

class Chair(django.db.models.Model):
desk = django.db.models.Foreignkey('Desk', related_name='chair',)
nearby_desks = django.db.models.ManyToManyField(
'Desk',
blank=True,
)

我想为 Desk 获取一个查询集,但它还应包含一个预取属性 favorite_or_nearby_chairs,其值应等于:

Chair.objects.filter(
(django.db.models.Q(nearby_desks=desk) | django.db.models.Q(desk=desk)),
some_other_lookup=whatever,
)

Prefetch 是否可行?我不知道如何使用参数。

最佳答案

您不需要使用预取。如果默认的 prefetch_related 不能做你想做的事,你只需要使用 Prefetch。

Chair.objects.select_related('desk').prefetch_related('nearby_desks')\
.filter(Q(nearby_desks=desk) | Q(desk=desk))

更新使用预取:

nearby_desks_qs = Desk.objects.all()

Chair.objects.select_related('desk')\
.prefetch_related(Prefetch('nearby_desks',
queryset=nearby_desks_qs,
to_attr='nearby_desks_qs'))\
.filter(Q(nearby_desks=desk) | Q(desk=desk))

关于python - 使用 Django 1. 7's ` 预取`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28730106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com