0

我在 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 = Event.objects.get(uuid=event_uuid)

现在我想获得事件的数量,但在单个公司内,而不是全球 ID。

4

1 回答 1

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()

您要收集一个(一些)公司(companies)与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
于 2013-06-01T14:57:02.540 回答