我正在为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框架而言远远不够。
答案 0 :(得分:0)
您的网址格式没有捕获任何值,因此没有任何内容可以传递给视图方法。您需要使用捕获括号:
r'(\d+)/review/$',
虽然通常您会使用命名组将值作为关键字参数发送:
r'(?P<id>\d+)/review/$',