Django管理中的Django附加视图 - URL麻烦

时间:2016-08-04 20:52:09

标签: python django django-admin django-urls django-1.9

我正在为django-admin添加其他视图。我的目标是覆盖change_form以使字段只读,并为其添加一些自定义表单以使用foreign_key对象,并且还有一个编辑页面,这将是我的额外视图创造。

我用这个开始自己但我已经遇到了一个问题,可能是因为我正在使用的Django版本。

http://patrick.arminio.info/additional-admin-views/

我遇到的问题是

TypeError at /admin/customers/order/1/review/
review() missing 1 required positional argument: 'id'

我不完全确定如何解决这个问题。我的代码在这里:

class OrderAdmin(admin.ModelAdmin):
    review_template = 'review.html'

    def get_urls(self):
        urls = super(OrderAdmin, self).get_urls()
        review_urls = patterns('',
            (r'\d+/review/$', self.admin_site.admin_view(self.review)),
        )
        return review_urls + urls

    def review(self, request, id):
        order = Order.objects.get(pk=id)

        return render_to_response(self.review_template, {
            'title': 'Review order: %s' % order.id,
            'entry': order,
            'opts': self.model._meta,
            'root_path': self.admin_site.urls,
        }, context_instance=RequestContext(request))

我是Django的新手,大部分有用的信息都出现在本书中,而不是文档,这对于Django自称为具有最后期限的完美主义者的Web框架而言远远不够。

1 个答案:

答案 0 :(得分:0)

您的网址格式没有捕获任何值,因此没有任何内容可以传递给视图方法。您需要使用捕获括号:

 r'(\d+)/review/$', 

虽然通常您会使用命名组将值作为关键字参数发送:

r'(?P<id>\d+)/review/$',