找到不止一次引用的django模型(和另一个复杂的查找)

时间:2012-04-26 20:55:43

标签: django django-models django-queryset

我有两种模式:

联系 - 有关与某人发生联系的信息 客户 - 有关联系人中提及的人的信息

我需要找到3次或更多次联系的客户。要做到这一点,这样的事情是有效的。不确定这是否是最有效的方法,但是如果没有我必须遍历客户端,它就是一条线。

client.objects.all().annotate(c_count=Count('contacted_client')).filter(c_count__gte=3)

现在变得更难了。联系方式有约会。

我需要找到所有在5周或更长时间内联系过的客户:“找到所有客户在Max(contact_date)-Min(contact_date)> 5周”的联系方式。我尝试使用相同的方法,但无法知道如何做到这一点。

在每个客户的基础上计算这个的逻辑是这样的:

min_date = contact.objects.filter(client=self).aggregate(Min('date'))['date__min']
max_date = contact.objects.filter(client=self).aggregate(Max('date'))['date__max']
    if (max_date - min_date).days > 5*7:
        return True
    else:
        return False

但是,如果我为许多客户执行此检查,它就会变慢。

0 个答案:

没有答案