1

Djangoで2つのモデルに対して1つのURLパターンを持つことは可能ですか?

ゲームとカテゴリの 2 つのモデルがあり、これらの両方に 1 つの URL パターンが必要です。

ios-games/category_name

ios-games/game_name

そのため、カテゴリ パターンが最初に実行され、スラッグがない場合はゲーム パターンがチェックされます。

これらの両方のモデルに対して 1 つの大きなビューを作成せずに行うことは可能ですか?

残念ながら、パスの順序はurl.py機能しません。最初のパターンでオブジェクトが見つからない場合、それ以上検索しません...

4

1 に答える 1

3

ビューから URL を調べ続けたいと言う方法はないと思います。ただし、正しいビューを呼び出すビューを作成することはできます。私は前にこのようなことをしました。何かのようなもの:

class GameCategoryFactory(View):
    def dispatch(self, request, *args, **kwargs):
        game_or_category_slug = kwargs.pop('slug')

        if Category.objects.filter(name=game_or_category_slug).count() != 0:
            return CategoryView.as_view()(request, *args, **kwargs)
        elif Game.objects.filter(name=game_or_category_slug).count() != 0:
            return GameView.as_view()(request, *args, **kwargs)
        else:
            raise Http404

もちろん、クラスベースのビューを使用しています。関数ベースのアプローチは非常に単純です。

于 2013-10-01T14:40:33.190 に答える