django-tagging でオブジェクトをフィルタリングする方法を知りたいと思っていました。
たとえば、記事を書いたのにステータスが変わらdraft
ない場合、記事がライブ ステータスにプッシュされる前にこれらを表示したくないことは明らかです。
で行いますか、{% tags_for_model products.Widget as widget_tags %}
それとも別の方法がありますか?
django-tagging でオブジェクトをフィルタリングする方法を知りたいと思っていました。
たとえば、記事を書いたのにステータスが変わらdraft
ない場合、記事がライブ ステータスにプッシュされる前にこれらを表示したくないことは明らかです。
で行いますか、{% tags_for_model products.Widget as widget_tags %}
それとも別の方法がありますか?
templatetags でタグを取得するオブジェクトをフィルタリングしません。タグを付ける簡単な方法が見つかりませんでした
Product.objects.filter(draft= False)
私がすることは、PublishedProduct のような Product のプロキシ モデルを作成することです。
class PublishedProduct(Product):
objects = PublishedProductManager()
class Meta:
proxy = True
次に、フィルターからサブセットを返すようにデフォルトのマネージャーを設定します (例: filter(draft= False))。
class PublishedProduct(models.Manager):
def get_query_set(self):
return super(PublishedProduct, self).get_query_set().filter(draft= False)
ビューで usage_for_model を使用してそれを行うことができます。たとえば、フィルターを追加できます
Tag.objects.usage_for_model(ModelClass, filters={"status":1})
または、フィルターを受け入れる tags_for_model のバージョンを作成します