G'day 我在Django中尝试修改/扩展查询。假设我在下面有这样的查询:
query_set = Managers.objects.select_related('managers_contacts').all()
现在,我想使用Python的循环遍历一个看起来像是的字典:{'continent': 'North America', 'country': '', 'city': ''}
如果某些键不是空,则查询集应扩展为:。{{1} }
我现在如何构建循环,但是有一个问题是如何向现有查询集添加.filter()对象?使用课堂?您有什么建议吗?最后,我想得到
filter(managers_addresses__some_field='')
答案 0 :(得分:0)
您可以使用**语法从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)