我有一個查詢集包含一些對象。根據一些案例或其他的我現在要排除不特定標籤的所有對象(_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?
因爲我很確定我沒有拼錯'身份證',我做了一些搜索如何使用標籤這樣的事情。在文檔中有很多關於自定義管理器,但不知何故,我不能得到它,我如何使用它們來獲得我想要的。
編輯:
校正上面
self.queryset=self.queryset.exclude(_tags__in=avoid)
其中忌是整數列表的代碼。這讓我擔心django-tagging的TagField只是一個特殊的CharField(或TextField?)。當然,如果我只是針對整數列表查詢它,那麼它將不會理清任何東西。我可以嘗試這樣的方式來解決這個問題:
for tag in avoid:
self.queryset=self.queryset.exclude(_tags__contains=tag.name)
這不僅難看,而且也給我留下的由多個單詞或其他標記的配套件標籤的問題。
我不知何故懷疑這可以通過了解django標記如何工作的人以更漂亮的方式解決。
此外,您不能直接在模板中訪問_tags字段。不允許以下劃線開頭的字段名稱。我建議不要用下劃線開頭名稱 – Mikael 2012-03-23 13:48:58
感謝您的快速回答。您對查詢參數非常正確,但這並不能解決我的問題。被稱爲_tags的原因是因爲模型上有一個名爲tags的屬性 - 從模板中訪問會更容易;) – marue 2012-03-23 13:53:41