python - 使用外键引用在 django 中过滤
问题描述
我的观点是接受查询参数并搜索满足该查询参数的场所。
cuisine = self.request.query_params.getlist('cuisine', 0)
if cuisine != 0:
cuisinelist =[]
for cuisine in cuisinelist:
cuisinepk = get_object_or_404(Cuisine, name=cuisine)
cuisinepk = cuisinepk.pk
cuisinelist.append(cuisinepk)
print('this is the cuisine pk')
print(cuisinepk)
venuelist = venuelist.filter(Q(cuisine1__in=cuisinelist) | Q(cuisine2__in=cuisinelist))
但实际上我没有得到任何归还的场地,这不起作用。
场地对象中的美食 1 和美食 2 如下所示。
cuisine1 = models.ForeignKey(Cuisine, on_delete=models.DO_NOTHING, related_name='cuisine1', blank=True, null=True)
cuisine2 = models.ForeignKey(Cuisine, on_delete=models.DO_NOTHING, related_name='cuisine2', blank=True, null=True)
当我想检查房间内的关系时,我使用这种方法。我想知道我是否需要这样做?什么是正确的方法?
seatedcapacity = self.request.query_params.get('seatedcapacity',0)
if seatedcapacity != 0:
try:
seatedcapacity = int(seatedcapacity)
except ValueError:
return Response(status=status.HTTP_400_BAD_REQUEST)
rooms = Room.objects.filter(venue=OuterRef('pk'), seatedcapacity__gte=seatedcapacity)
venuelist = venuelist.annotate(hasseatedcapacity=Exists(rooms))
venuelist = venuelist.filter(Q(hasseatedcapacity=True) | Q(fullbuyoutseatedcapacity__gte=seatedcapacity))
解决方案
推荐阅读
- google-cloud-platform - Google Cloud Scheduler - 自动化所有项目
- mongodb - Mongodb:如何列出字段的类型?
- ios - MKwebview:在隐式展开可选值时意外发现 nil
- python - 在python中编译C函数的问题
- python-3.x - Python Pandas:无法根据 groupby 在两个不同的列中返回字典
- java - How to remove META-INF from dependencySet using maven-assembly-plugin?
- android - SAF - 检查 Uris 的权限不在 getPersistedUriPermissions() 列表中
- c++ - 使用 LLVM 时的链接器错误
- ios - 错误:通过桥接头在 Swift 项目中使用旧的 Objective C 库后的预期标识符或“(”
- angular - 角路由器LinkActiveOptions