Bảng MyModel= { 1: ‘A’, 2: ‘B’, 3: ‘C’, 4: ‘D’, 1: ‘E’}
Thực hiện truy vấn lấy dữ liệu:
q1 = MyModel.objects.all() -> <QuerySet [<MyModel: A>, <MyModel: B>, <MyModel: C>, <MyModel: D>, <MyModel: E>]> q2 = MyModel.objects.filter(name__in=('A','B')) -> <QuerySet [<MyModel: A>, <MyModel: B>]> q3 = MyModel.objects.filter(name__in=('C','D')) -> <QuerySet [<MyModel: C>, <MyModel: D>]>
– Union() sẽ trả kết hợp các kết quả trong 2 hay nhiều QuerySet, theo mặc định các kết quả trả về là duy nhất, nếu muốn có các kết quả trùng lặp cần thêm all=True
q2.union(q3) -> <QuerySet [<MyModel: A>, <MyModel: B>, <MyModel: C>, <MyModel: D>]> q1.union(q2, q3) -> <QuerySet [<MyModel: A>, <MyModel: B>, <MyModel: C>, <MyModel: D>, <MyModel: E>]> q1.union(q3, all=True) -> <QuerySet [<MyModel: A>, <MyModel: B>, <MyModel: C>, <MyModel: D>, <MyModel: E>, <MyModel: C>, <MyModel: D>]>
– Intersection() sẽ trả các phần tử được chia sẻ trong 2 hay nhiều QuerySet,
q1.intersection(q2) -> <QuerySet [<MyModel: A>, <MyModel: B>]> q2.intersection(q3) -> <QuerySet [ ]>
– Difference() trả về các phần tử có trong QuerySet này mà không có trong QuerySet khác.
q1.difference(q2) -> <QuerySet [<MyModel: C>, <MyModel: D>, <MyModel: E>]> q1.difference(q2, q3) -> <QuerySet [<MyModel: E>]> q2.difference(q3) -> <QuerySet [<MyModel: A>, <MyModel: B>]>