我在Django应用程序中有以下模型(简化):
class Company(BaseModel):
user = models.OneToOneField(User)
title = models.CharField(max_length=128)
class Event(BaseModel):
company= models.ForeignKey(Company)
description = models.TextField(verbose_name="Description", blank=True,null=True,max_length=200,default="")
在我的一个视图中,我想为已登录用户“拥有”的公司计算事件对象。 访问公司对象我使用像request.user.company
这样的东西如何统计与单个公司相关的所有事件对象?
我想我问的是错误的问题。我想做的事: 我选择单个事件对象:
event = Event.objects.get(uuid=event_uuid)
现在我想获得一些事件但在单个公司内,而不是全局ID。
答案 0 :(得分:2)
我发现您的问题很难理解,您是否希望将Event
与给定的Company
相关联?
c = Company.objects.get(...)
event_n = Event.objects.filter(company=c).count()
或
n = 2
event_n = Event.objects.filter(company__pk=n).count()
或
u = User.objects.get(...)
event_n = Event.objects.filter(company__user=u).count()
您想收集一个(某些)公司(公司),其中Event
的数量相关联吗?
from django.db.models import Count
company = Company.objects.filter(pk=n).annotate(event_n=Count('event')).get()
print company.event_n
或
companies = Company.objects.filter(...).annotate(event_n=Count('event'))
for c in companies:
print c.event_n
如果您已经有一个活动,并且您想要与其公司关联的活动数量,您可以尝试
e = Event.objects.get(...)
event_n = Event.objects.filter(company=e.company).count()
或
n = 3
e = Event.objects.filter(pk=n).annotate(event_n=Count('company__event')).get()
print e.event_n