比方说,我有两个表:all_my_friends_ids和my_facebook_friends_ids,代表我的朋友在数据库中的两个列表:
all_my_friends_ids = self.user.follows.values_list('pk', flat=True)
(例如all_my_friends_ids = [1,4,9,16,18,20,24,70])
my_facebook_friends_ids = User.objects.filter(facebook_uid__in=my_facebook_friends_uids)
(例如my_facebook_friends_ids = [4,16,28,44,39])
我想检查my_facebook_friends_ids列表的所有元素是否都在all_my_friends_ids中有条目,如果没有 - 返回不在all_my_friends_ids列表中的id元素(稍后在all_my_friends_ids中添加它们)。
如何使用QuerySet在Django ORM中解决此任务?我试图提取id并将这个函数应用于它们:
def sublistExists(list1, list2):
return ''.join(map(str, list2)) in ''.join(map(str, list1))
但这似乎不正确,特别是对我来说。
答案 0 :(得分:0)
facebook_exclusives = (User.objects
.filter(facebook_uid__in=my_facebook_friends_uids)
.exclude(facebook_uid__in=all_my_friends_ids))
如果需要,可以将其完全卸载到数据库中,而无需在Python中创建(可能很大的)中间列表:
facebook_exclusives = (User.objects
.filter(facebook_uid__in=my_facebook_friends_uids)
.exclude(facebook_uid__in=self.user.follows.all()))