두 개의 사용자 정의 관리자 메소드가있는 장고 모델이 있습니다. 각각은 객체의 다른 속성을 기반으로 모델 객체의 다른 하위 세트를 반환합니다.두 장고 쿼리 세트의 결합을 어떻게 찾을 수 있습니까?
각 관리자 메소드에서 반환 된 쿼리 세트의 합집합 인 쿼리 세트 또는 객체 목록을 가져 오는 방법이 있습니까?
두 개의 사용자 정의 관리자 메소드가있는 장고 모델이 있습니다. 각각은 객체의 다른 속성을 기반으로 모델 객체의 다른 하위 세트를 반환합니다.두 장고 쿼리 세트의 결합을 어떻게 찾을 수 있습니까?
각 관리자 메소드에서 반환 된 쿼리 세트의 합집합 인 쿼리 세트 또는 객체 목록을 가져 오는 방법이 있습니까?
이 작동하고 조금 청소기 같습니다 당신이 중복되지 않도록하려면
records = query1 | query2
는, 당신은 .distinct()
를 추가해야합니다
records = (query1 | query2).distinct()
허용 대답은 노조 iterable (정확하게 될 목록), OP가 요청한 것처럼 반환하지만,이 방법은 querysets의 진정한 조합을 반환합니다. 이 쿼리 세트는 더 많은 작업을 할 수 있으며, 이는 많은 경우에 필요합니다. –
Django 버그로 인해,이 구조는'ManyToManyField'를 처리 할 때 때로는 잘못된 결과를 반환 할 수 있습니다. 예를 들어,'records.count()'가'query1.count() + query2.count()'보다 큼을 알 수 있습니다. 이것은 분명히 부정확합니다. – Jian
@Jian djangoproject 문제에 대한 버그와 링크로 장고 버전을 명확히 할 수 있습니까? – IMFletcher
이 version 1.11에서 시작, 장고 검색어 세트는이를 내장형 결합 방법.
q = q1.union(q2) #q will contain all unique records of q1 + q2
q = q1.union(q2, all=True) #q will contain all records of q1 + q2 including duplicates
q = q1.union(q2,q3) # more than 2 queryset union
자세한 내용은 내 blog post을 참조하십시오.
(삭제 된 답변에서) 다른 모델의 QuerySets와 호환되는 변형에 대해이 질문을 참조하십시오. http://stackoverflow.com/questions/431628/how-to-combine-2-or-more-querysets-in -a-django-view – rnevius
버전 1.11부터 django 질의 세트에는 내장 된 내장 메소드가 있습니다. 난 미래의 참조에 대한 답변으로 추가했습니다 –