假設您有一個表示呼叫記錄的模型,其中包含:您呼叫的人(呼叫號),呼叫日期(呼叫)以及呼叫者是否需要呼叫重新或不重新。僅返回每個呼叫者的最近呼叫
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
如果每個被叫號碼只有一個呼叫,這將工作。但是因爲它們不是獨一無二的,所以這不起作用。 –