Django queryset-过滤不在列表中

Django queryset- Filter by not in list

我有具有名称和颜色的 Dog 模型,并且我有包含我想要排除的狗的(名称、颜色)的元组列表。 我怎样才能实现一个查询集来过滤该列表中不存在的狗?

class Dog(BaseModel):
    name = models.CharField(max_length=255)
    color = models.CharField(max_length=255)

Dog.objects.all()
>> [<Dog: name='Lucky', color='Brown'>, <Dog: name='Lucky', color='White'>, <Dog: name='Maple', color='Brown'> ,<Dog: name='Maple', color='Black'>, <Dog: name='Maple', color='White'>]

_list = [('Maple', 'White'), ('Lucky', 'Brown')]

我要找的是这样的东西:

Dog.objects.custom_exclude(_list)

>> [<Dog: name='Lucky', color='White'>, <Dog: name='Maple', color='Brown'> ,<Dog: name='Maple', color='Black'>]

这应该可以完成工作。

import operator
from functools import reduce

from django.db.models import Q

exclude_params = reduce(operator.or_, [Q(name=name, color=color) for name, color in list])
Dog.objects.exclude(exclude_params)