2
我試圖讓自定義視圖在Django admin中工作。我有下一個型號:添加自定義視圖到Django管理員
class Reseller(models.Model):
first_name = models.CharField(max_length=64, verbose_name='First Name')
last_name = models.CharField(max_length=64, verbose_name='Last Name')
email = models.CharField(max_length=64, verbose_name='E-mail')
password = models.CharField(max_length=64, blank=True, editable=False)
這是我如何添加一個自定義按鈕(重置密碼)。自定義視圖(擴展change_form.html)我有這樣的:
{% extends "admin/change_form.html" %}
{% load i18n %}
{% block object-tools %}
{% if change %}
<ul class="object-tools">
<li><a href="reset_password/">Reset Password</a></li>
</ul>
{% endif %}
{% endblock %}
這就是我在admin.py
from django.conf.urls.defaults import patterns
from django.contrib import admin
from django.shortcuts import redirect
from django.shortcuts import render_to_response
from django.template import RequestContext
from myapp.resellers.models import Reseller
class ResellerAdmin(admin.ModelAdmin):
list_display = ('id', 'first_name', 'last_name', 'email')
list_filter = ('email')
search_fields = ('first_name', 'last_name', 'email')
ordering = ['-id', ]
def get_urls(self):
urls = super(ResellerAdmin, self).get_urls()
my_urls = patterns('',
(r'(?P<id>\d+)/reset_password/$',
self.admin_site.admin_view(self.reset_password)),
)
return my_urls + urls
def reset_password(self, request, id):
entry = Reseller.objects.get(pk=id)
[...GENERATE AND SEND PASSWORD FUNCTION GOES HERE...]
return redirect(entry)
admin.site.register(Reseller, ResellerAdmin)
當我運行這段代碼我得到了下:argument of type 'Reseller' is not iterable
。我是Django的新手,所以基本上有一個愚蠢的錯誤,所以請不要downvote :)