如何解决使用python / django计算模型字段实例的唯一或不同值
试图显示数据库中存在的字段的唯一实例数。在下面的模型中,“ uid”是用户ID#,用户可以在同一“ uid”下的数据库上创建多个记录。因此,如果我计算'uid的数量,我将仅获取数据库中创建的所有记录的数量,但是我试图获取数据库中存在的唯一'uid'的数量。被.count(),Count和.distinct()弄得一团糟。我对distinct = True选项也很困惑。这是为了向分析仪表板提供数据,因此我想计算数据库中存在的不同用户的数量。
models.py
class Session(models.Model):
uid = models.CharField(max_length=50,blank=True)
cid = models.CharField(max_length=50,blank=True) # switched from eid
client = models.CharField(max_length=50,blank=True)
views.py
class DashboardListView(LoginRequiredMixin,ListView):
model = Session
template_name = 'blog/dashboard.html'
def get_queryset(self):
user = get_object_or_404(User,username=self.kwargs.get('username'))
return Session.objects.filter(client=user).order_by('-session_date')
def get_context_data(self,**kwargs):
user = get_object_or_404(User,username=self.kwargs.get('username'))
context = super().get_context_data(**kwargs)
context['total_records'] = Session.objects.filter(client=user).count() # count function
return context
html标记
{{ total_records }}
模型会话中的sqlite数据库记录示例
uid | cid |客户
001 | abc | DummyCo
001 | abc | DummyCo
001 | xyz | DummyCo
002 | xyz | DummyCo
002 | abc | DummyCo
003 | abc | DummyCo
因此,所需的输出将是:
不同的uid:3
区别cid:2
(在这种情况下,客户端始终是相同的。)
请明确一点:我不需要,需要计数“ 001”被列为“ uid”的次数,我需要知道数据库中存在多少个不同的“ uid”。
解决方法
如@sabiwara所述,此问题之前已得到回答。我只是想把我的最终代码行放在这里,因为我有一个更简单的用例,它可能会在将来对某人有所帮助。
这是调整后的views.py部分,我在其中添加了新代码行
def get_context_data(self,**kwargs):
user = get_object_or_404(User,username=self.kwargs.get('username'))
context = super().get_context_data(**kwargs)
session_list = list(context['sessions']) # evaluates the query
context['total_users'] = Session.objects.filter(client=user).values('uid').distinct().count() # new code line
context['sessions'] = session_list
return context
** html标签**
{{ total_users }}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。