あなたが実際にやりたいことは、単にdetail
ビュー内の関連するオブジェクトを取得することだと思います。
しかし、最初に警告の言葉:あなたのURLは非常に奇妙であり、あなたが期待する結果をあなたに与えません。所有者ID、所有者、およびIDの値の間には分割がないため、正規表現は常に最後の2つまでのすべての文字を所有者IDとして割り当て、それぞれ1つを所有者とIDに割り当てます。たとえば、URLがである場合、これは常にとして解析されるため、products/category/type/1daniel34/
解析されるのではなく。キャプチャする各要素の間にスラッシュを入れ、数字を照合する代わりに使用し、名前付きグループを使用する必要があります。('1', 'daniel', '34')
('1daniel', '3', '4')
\d
\w
^products/category/type/(?P<owner_id>\d+)/(?P<owner>\w+)/(?P<id>\d+)/$
(また、urlconfから文字列全体を再現するのではなく、permalink
デコレータを使用して絶対URLを生成することを検討する必要があります。)
ここで、視点は、URLconfからキャプチャされた値が渡されるということです。したがって、絶対URLへの参照は混乱を招きます。get_absolute_urlによって生成される値を気にする必要はありません。ビューに渡された値を使用してデータベースにクエリを実行するだけです。この場合、ビューは次のようになります。
def detail(owner_id, owner, id):
product = Product.objects.get(id=id, owner_id=owner_id)
...etc...
owner
所有者IDでオブジェクトを識別するのに十分である可能性が高いため、への参照を省略していることに注意してください。実際、ID自体は一意であり、所有者はまったく必要ないため、ID自体で十分だと思いますが、それはあなた次第です。