Python QuerySet对象和或运算符

Python QuerySet对象和或运算符,python,django,list,Python,Django,List,我是python新手,在使用djnago查询时发现了一些对象列表,如 querysetObj = <QuerySet [<class: obj1>, <class: obj2>]> queryset=<QuerySet [<class: obj1>, <class: obj3>,<class:obj4>]> for obj in querysetObj: queryset|=obj queryse

我是python新手,在使用djnago查询时发现了一些对象列表,如

 querysetObj = <QuerySet [<class: obj1>, <class: obj2>]>
 queryset=<QuerySet [<class: obj1>, <class: obj3>,<class:obj4>]>
 for obj in querysetObj:
   queryset|=obj 
 queryset=<QuerySet [<class: obj1>, <class: obj3>,<class:obj4>,<class:obj2]>#it acts like a set compare objects and add none repeated objects only 
querystobj=
queryset=
对于querysetObj中的obj:
queryset |=obj

queryset=您可以通过实现特殊的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
方法(也可能是
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

如果左操作数定义了
\uuuuu或
,则调用其
\uuuu或
方法。如果它没有执行,或者抛出了
未实现的
,则调用右操作数的
错误


其他操作符的实现方式也类似,使用各种特殊函数。

它确实有效,我已经尝试检查DjangQuerySet不是列表,它们是QuerySet。例如,参见django罚单,了解它们添加到Yes中的位置,我想做相同的设计,但是对于普通类谢谢,我正在用我自己的类检查它
class Foo:
    def __or__(self, other):
        return "Orred Foo"
    def __ror__(self, other):
        return "Rorred Foo"

Foo() | Foo()
# => 'Orred Foo'
Foo() | 7
# => 'Orred Foo'
7 | Foo()
# => 'Rorred Foo'