これは重複した質問かもしれませんが、ここで答えが見つかりません。2 つの異なるモデルを取ることができるメソッドを作成しようとしています。Post モデルと Comment モデルがあり、vote_up メソッドでこれらの両方の投票を処理したいと考えています。
ビュー.py
def vote_up(request, obj): #portotype not working atm...
if isinstance(obj, Post):
o = Post.objects.get(id=obj.id)
elif isinstance(obj, Comment):
o = Comment.objects.get(id=obj.id)
else:
return HttpResponseRedirect(request.META.get('HTTP_REFERER')) #add 'something went wrong' message
o.votes += 1
o.save()
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
urls.py
urlpatterns = patterns('',
url(r'^vote_up/(?P<obj>\d+)/$', 'post.views.vote_up'),
url(r'^post_vote_down/(?P<post_id>\d+)/$', 'post.views.post_vote_down'), # works fine no instance check here, using separate methods for Post/Comment
url(r'^comment_vote_down/(?P<comment_id>\d+)/$', 'post.views.comment_vote_down'),
)
私が得るエラーは私の既存の URL をリストしています: 現在の URL、post/vote_up/Post オブジェクトは、これらのいずれとも一致しませんでした。または 現在の URL、post/vote_up/Comment オブジェクトがこれらのいずれにも一致しませんでした。
\d+ が悪役だと思いますが、正しい構文が見つからないようです。