私はdjango-filterを使用して、自分のサイトのリストビューでユーザーフィルタリングを提供します。私はこれを行う場合Djangoはクエリーセット専用のフィルタオプション
class MyModel(models.Model):
fruit = models.ForeignKey(Fruit)
price = models.CharField(...)
release_date = models.DateTimeField(...)
class MyFilter(filters.FilterSet):
...
class Meta:
model = MyModel
fields = ['fruit', 'price', 'release_date']
def my_banana_orange_view(request):
...
queryset = MyModel.objects.filter(fruit__name__in=['banana', 'orange'])
filter = Filter(request.GET, queryset=queryset)
return render(request, 'my_template.html', {'queryset': queryset, 'filter': filter})
は今、私はバナナやオレンジのいずれかの関係を持っているだけでMyModel
エントリを表示することができますが、MyFilter
はまだFruit
モデル内のすべての果物のオプションを提供します。私は、入力クエリセットに関連するオプションを表示するだけのFilterSetの設定を見つけようとしていますが、見つけられません。誰かが存在しますか?
そうでなければ私はこのような何かをするためのフィルタを無効にする必要があります推測:
class MyFilter(filters.FilterSet):
def __init__(self, *args, **kwargs):
super().__init__(self, *args, **kwargs)
self.filters['fruit'].extra['queryset'] = Fruit.objects.filter(mymodel=self.queryset)
class Meta:
model = MyModel
fields = ['fruit', 'price', 'release_date']
ビット行き過ぎ思われます。入力クエリセットに基づいたオプションだけを表示することは望ましい動作と思われますが、そのドキュメントを見つけることはできません。これを行う良い方法はありますか?どんな助けにも感謝!
OK私の例ではリクエスト情報が欠落していました。これをやっても、クエリーセットにあるものだけでなく、ドロップダウンの 'Fruit'モデルのすべてのエントリが表示されます... – DrBuck