django - 按字段获取 Queryset 的不同值

标签 django field distinct django-queryset

我有这个模型:

class Visit(models.Model):
    timestamp  = models.DateTimeField(editable=False)
    ip_address = models.IPAddressField(editable=False)

如果用户在一天内多次访问,我如何根据 ip 字段筛选唯一行?(我想要今天的唯一访问)

today = datetime.datetime.today()
yesterday = datetime.datetime.today() - datetime.timedelta(days=1)

visits = Visit.objects.filter(timestamp__range=(yesterday, today)) #.something?

编辑:

我看到我可以使用:

Visit.objects.filter(timestamp__range=(yesterday, today)).values('ip_address')

获取仅包含 ip 字段的 ValuesQuerySet。现在我的 QuerySet 看起来像这样:

[{'ip_address': u'127.0.0.1'}, {'ip_address': u'127.0.0.1'}, {'ip_address':
 u'127.0.0.1'}, {'ip_address': u'127.0.0.1'}, {'ip_address': u'127.0.0.1'}]

如何在不评估 QuerySet 和进行数据库命中的情况下过滤它的唯一性?

# Hope it's something like this...
values.distinct().count()

最佳答案

你想要的是:

Visit.objects.filter(stuff).values("ip_address").annotate(n=models.Count("pk"))

它所做的是获取所有 ip_addresses,然后获取每个 ip 地址的主键计数(也称为行数)。

关于django - 按字段获取 Queryset 的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3432673/

相关文章:

java - 冒泡排序根据计数将重复项排序到不同列表中

Django Rest API-使用搜索过滤器搜索方法字段

python - 从循环创建类字典条目比 locals() 更好的方法

python - 使用另一个模型中的行创建 MultipleChoiceField,

sql-server - Django上的Microsoft Access 2007数据库?

linux - 如何使用 awk、sed、剪切、粘贴 (Unix/Linux) 偏移 CSV 文件中的字段?

java - 努力理解如何在方法中使用字段

javascript - 将选择菜单连接到单个表单输入中

distinct - Linq 到 NHibernate Distinct() "Expression type not supported"错误

来自 3 个表的 mysql "distinct query"在大数据上执行缓慢