循环修改 Django 的 ORM 查询

席蒙

G'day 我正在努力修改/扩展 Django 中的查询。假设我有如下查询:

query_set = Managers.objects.select_related('managers_contacts').all()

现在我想使用 Python 的循环来查看一个字典,它可能看起来像:{'continent': 'North America', 'country': '', 'city': ''}如果某些键不是 none,则查询集应该扩展为: 。filter(managers_addresses__some_field='')我现在如何构建循环,但问题是如何将 .filter() 对象添加到现有查询集?使用类?你有什么建议最后我想得到类似的东西

query_set = Managers.objects.select_related('managers_contacts').all().filter(managers_addresses__some_field='')
从不独行者

您可以使用 ** 语法从 dict 中解压参数。所以你只需要创建新的 dict 并用正确的键名填充它:

# Python 3.6 or above
kwargs = {f"managers_addresses__{key}": value for key, value in some_dict.items() if value}
queryset = queryset.filter(**kwargs)

# Python 3.5 or lower
kwargs = {"managers_addresses__{}".format(key): value for key, value in some_dict.items() if value}
queryset = queryset.filter(**kwargs)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章