我有很多代码运行如下的查询:
User.objects.filter(town=selectedTown, gender="M").count();
如果我正在编写mySQL语句,我可以通过"%"作为selectedTown的值,它将匹配所有内容。有没有办法在Django中实现这一点,不是通过修改查询,而是通过传入通配符字符串。
原因是因为我有大量的代码块,可以在我选择的任何一个城镇提供有关用户的各种统计信息。我也希望有一个"大师"查看它向每个城镇显示用户的位置,但我不想重新编写所有查询。
谢谢!
答案 0 :(得分:3)
最好不要指定town
过滤器:
User.objects.filter(gender="M").count();
为此,您可以使用字典来传递关键字参数:
def count_users(selectedTown=None):
filters = {"gender": "M"}
if selectedTown is not None:
filters["town"] = selectedTown
return User.objects.filter(**filters).count();