0

簡単に言うと、django フィルター (標準) を使用すると、「すべて」を表示するオプションが提供されます。「なし」を含むアイテムを表示するオプションを作成したい

クエリは次のようになります。

tags = Product.objects.exclude(tag__isnull=True)

私のモデル.py

class Tag(models.Model):
    name = models.CharField(max_length=100, blank=False)
    def __unicode__(self):
        return self.name

class Product(models.Model):
    name = models.CharField ("Name", max_length=400)
    tag = models.ManyToManyField(Tag, blank=True)
    def __unicode__(self):
       return self.name

どうすればこれを達成できますか?SimpleListFilter を試しましたが、これはフィルター内のすべてのアイテムをリストしただけです。アイテムを管理ページ ビューに表示したい。管理者アクションでこれを実行できますか?

4

2 に答える 2

2

次のようなタグを持たないものはすべて除外できます。

tags = Product.objects.all().exclude(tag=None)
于 2015-12-09T06:39:22.243 に答える
1

私はちょうどそれを理解しました-Djangoはこれを「list_filter」を使用して自動的に行います。ただし、タグ (models.py で定義されている自己名) を使用する場合にのみ機能し、以下のようには機能しません。

私がしなければならなかったのは、変更することだけでした

list_filter: ('tag__name')

list_filter: ('tag')

これは、Django フィルターを表示する標準的な方法です。すべてを見ることができます & (なし)

于 2015-12-09T23:59:56.793 に答える