查询Django模型时,有没有办法匹配字段中的每个字符串

时间:2015-03-25 22:25:02

标签: python mysql django

我有很多代码运行如下的查询:

User.objects.filter(town=selectedTown, gender="M").count();

如果我正在编写mySQL语句,我可以通过"%"作为selectedTown的值,它将匹配所有内容。有没有办法在Django中实现这一点,不是通过修改查询,而是通过传入通配符字符串。

原因是因为我有大量的代码块,可以在我选择的任何一个城镇提供有关用户的各种统计信息。我也希望有一个"大师"查看它向每个城镇显示用户的位置,但我不想重新编写所有查询。

谢谢!

1 个答案:

答案 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();