假设您有一个表示呼叫记录的模型,其中包含:您呼叫的人(呼叫号),呼叫日期(呼叫)以及呼叫者是否需要呼叫重新或不重新。仅返回每个呼叫者的最近呼叫
class CallLog(models.Model):
id = models.AutoField(primary_key=True)
calledid = models.BigIntegerField()
calldate = models.DateField()
recontact = models.BooleanField()
我想要做的就是收集一套calledid
的是,在他们的最后一次通话鉴定,他们不希望再次(recontact=False
)联络。 calledid
并不是唯一的,同一个人可能有多个呼叫导致以前没有重新联系,因此我们必须始终确定是否应根据他们最近的呼叫重新联系。
我该怎么做呢?
这是我到目前为止已经或试验...不知道,如果这个工程没有
calls = CallLog.objects.order_by("-calldate")
seen = set()
seencalledid = set()
keep = []
for o in calls:
if o.calleid not in seen:
keep.append(o)
seen.add(o.calledid)
if o.recontact:
seencalledid.add(o.callid)
no_recontact = CallLogs.filter(calledid__in = seencalledid).values_list('calledid',flat=True)
按照calldata排序的查询并检查recontact值吗? – M4rtini
如果每个被叫号码只有一个呼叫,这将工作。但是因为它们不是独一无二的,所以这不起作用。 –