質問として、私はAPIで公開されているフィルタフィールド名の名前を変更しようとしています。django-filtersを使用してフィルタフィールド名を変更する方法(APIで公開)
私は、次のモデルがあります:
class Championship(Model):
...
class Group(Model):
championship = ForeignKey(Championship, ...)
class Match(Model):
group = ForeignKey(Group, ...)
私はREST APIでこれらのモデルのすべてを暴露しています。私はMatch
モデルのfilter_fields
を定義しました:?
カール/ API /マッチ/ group__championship = 1
:この方法では、私は特定のチャンピオンシップの試合(テストや作業)をフィルタリングすることができます
されていますが、私は次のように使用できるようにさらさフィルタのエイリアスのいくつかの種類を使用することが可能である:
カール/ API /一致/?この場合
championship
をgroup__championship
のエイリアスになり優勝= 1
?
pip freeze
リターン:ビューで
class MatchFilterSet(FilterSet):
championship = ModelChoiceFilter(method='filter_championship')
def filter_championship(self, queryset, name, value):
return queryset.filter(group__championship=value)
class Meta:
model = Match
fields = ['championship']
:
class MatchViewSet(ModelViewSet):
filter = MatchFilterSet
(...)
しかし運と
django-filter==0.15.2
(...)
私もModelChoiceFilter
とカスタムFilterSet
とカスタム検索メソッドを実装しようとしました。 filter_championship
メソッドも呼び出されませんでした。