我有一张表,其中包含涉及 Sim 卡的任务列表。只有在任务中使用的所有 sims 卡同时可用时才能完成任务
表中的示例任务:
Task1 - IMEI1 & IMEI2
Task2 - IMEI1
如果我有一个只有 IMEI1 的 IMEI 列表,我只想拥有 Task2。如果我有一个带有 IMEI1 和 IMEI2 的列表,我想拥有 Task1 和 Task2。
请注意,我在此列表中有随机数量的模拟人生。
这是我的代码:
class Sim(models.Model):
msisdn = models.CharField(max_length=20, blank=False, null=False)
imei = models.CharField(max_length=40, blank=False, null=False, default='IMEI')
class taskInQueue(models.Model):
simInvolved = models.ManyToManyField(Sim)
所以在一个taskInQueue
我有一个或多个Sim
参与的任务。在一个函数中,我尝试获取所有涉及模拟人生列表的任务:
sim = getSimInvolved(_imeiList) #_imeiList is a list of IMEI -> Sim is a list of SIm Objects
首先,我正在做以下事情:
tasks = taskInQueue.objects.filter(simInvolved__in=sim, testsStatus='W').distinct().order_by('pk')
问题是,通过这个查询,我将完成所有涉及至少一个模拟人生的任务。因此,如果我可以使用前面的示例,_imeiList=['IMEI1']
我将获得 Task1 和 Task2,而我只能获得 Task2。
那么我如何过滤taskInQueue
列表中的所有参与模拟市民_imeiList
呢?