일부 개체가 포함 된 쿼리 집합이 있습니다. 일부 경우 또는 내가 지금 특정 태그없이 모든 개체 제외 할 다른에 따라 (_tags 나의 모델에 TagField의 이름입니다) :특정 태그가없는 개체를 검색하는 방법은 무엇입니까?
self.queryset=self.queryset.exclude(_tags__id__in=avoid)
그러나 이것은 단지 오류로 날 나뭇잎 :
Caught FieldError while rendering:
Join on field '_tags' not permitted.
Did you misspell 'id' for the lookup type?
저는 'ID'를 잘못 입력하지 않았 음을 알고 있기 때문에 이런 식으로 태그를 사용하는 방법을 검색했습니다. 문서에서 커스텀 매니저에 관해서는 많은 것들이 있지만 어쨌든 나는 단지 내가 원하는 것을 얻기 위해 그것들을 어떻게 사용할 수 있는지 알 수 없다.
편집 :
은 피하기는 정수의 목록입니다
self.queryset=self.queryset.exclude(_tags__in=avoid)
에 위의 코드를 수정했습니다. 그리고 그 장고 태그의 TagField 그냥 특수 CharField (또는 TextField?) 문제가 날 나뭇잎. 물론 정수 목록에 대해 쿼리하면 어떤 것을 정렬하지 않습니다.
for tag in avoid:
self.queryset=self.queryset.exclude(_tags__contains=tag.name)
뿐만 아니라 추한뿐만 아니라 여러 단어 또는 다른 태그와 일치하는 부분으로 구성 태그의 문제 나 잎 :이 같은 방법으로이 문제를 해결을 시도 할 수 있습니다.
나는 장고 태깅이 어떻게 작동하는지 이해 한 사람이이 방법을 훨씬 더 예쁘게 해결할 수 있다는 의혹을 가지고 있습니다.
또한 템플릿에서 _tags 필드에 직접 액세스 할 수 없습니다. 밑줄로 시작하는 필드 이름은 허용되지 않습니다. 나는 밑줄로 그 이름을 시작하지 않을 것을 권한다. – Mikael
당신의 빠른 대답에 감사드립니다. 당신은 쿼리 인수에 대해 절대적으로 옳았지 만 그건 내 문제를 해결하지 못합니다. _tags는 모델에 tags라는 속성이 있기 때문에 그대로 호출됩니다. 템플릿에서 훨씬 쉽게 액세스 할 수 있습니다.) – marue