1

私が抱えている問題は、グループ内のすべての人を表示するためにビューを (変更するのではなく) 使用したいということです。問題は、正規表現で pk を使用して同じ行をフィルタリングする方法がわからないことです...

私は次のようなものが欲しかった:

url(r'^groups/(?P<pk>\d+)/$', login_required(MyListView.as_view(model=Person, queryset=Person.objects.filter(groups__id=pk))), name='person_group_list'),

これで私は得る:「 /clients/ の NameError

名前 'pk' は定義されていません"

ヒントはありますか?

4

1 に答える 1

2

あなたは本当にビューを書く必要があります。これがクラス ベースのビューの利点です。MyListView から簡単に継承できます。(これをやりたくないと言ったのは知っていますが、それは本当に正しい方法です)。

from your_app.views import MyListView
from your_app.models import Person

class MySpecialListView(MyListView):
    model = Person
    get_queryset(self, *args, **kwargs):
        return Person.objects.filter(groups__id=self.kwargs['group_pk']))

余談ですが、競合の可能性を避けるために、正規表現で pk を group_pk に変更します。

url(r'^groups/(?P<group_pk>\d+)/$', login_required(MySpecialListView.as_view(), name='person_group_list')
于 2013-02-09T11:37:41.283 に答える