0
와 M2M 일치 또는 없음을 확인합니다 'manytomany'객체를 선택하거나 개별 'Bar'객체와 일치하는 적어도 하나 이상의 manytomany 객체를 선택합니다.방법 모두 M2M 필드가 같은 세 번째 모델 가리키는 나는 두 가지 모델이 장고
그래서 내 데이터는 다음과 같습니다
foo1.moos__all = 'boo', 'yah'
foo2.moos__all = <none>
foo3.moos__all = 'suck'
bar1.moos__all = 'boo'
그런 다음이 검색을 수행 생산할 것 :
bar1.find_matches()
>>> foo1, foo2
적어도 하나의 항목 일치를 포함 할 필요가 에 사용되는 데이터 모델을, 그래서 다음과 같이 쉽습니다.
Foo.objects.filter(manytomany__in=bar1.moos.all())
이제 모델에 chang ed, Foo.moos는 비워 둘 수 있습니다. 그래서 짧은에,이 작업을 수행해야합니다?
Foo.objects.filter(
Q(moos__in=bar1.moos.all()) | Q(moos__count=0)
)
는 슬프게도 __count
가 옵션 :(
어떤 밝은 아이디어가 아니다
그 그것은 어쨌든이 여분의 필터에 대한 필요성을 무효화하는 데이터 모델 마이그레이션과 관련하여 더 많은 문제점을 지적했으나 알아두면 유용합니다. –