这可能是一个重复的问题,但我在这里找不到任何答案。我正在尝试编写一种能够采用两种不同模型的方法。我有一个 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'))
网址.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+ 是恶棍,但似乎找不到正确的语法。