Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
669 views
in Technique[技术] by (71.8m points)

python 3.x - Django Rest : AssertionError: Cannot combine a unique query with a non-unique query

I am trying to get a queryset with unique instances of a model project. when I try to combine multiple querysets with & operator like

projects = (q1_projects & q2_projects & q3_projects)

I get this error

AssertionError: Cannot combine a unique query with a non-unique query.

question from:https://stackoverflow.com/questions/65916658/django-rest-assertionerror-cannot-combine-a-unique-query-with-a-non-unique-qu

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

As quoted by ruddra

You can use union() to combine different querysets like this:

q1_projects = Model.objects.filter(...)
q2_projects = Model.objects.filter(...)
q3_projects = Model.objects.filter(...)

projects = q1_projects.union(q2_projects, q3_projects)

That will give same result as:

projects = q1_projects & q2_projects & q3_projects

Note: The UNION operator selects only distinct values by default. To allow duplicate values, use the all=True argument.

But if you want to order_by on the ForeignKey, you have to use select()


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...