2010-03-10 33 views
0

我在forms.pyDjango的管理异常值:“DeclarativeFieldsMetaclass”对象不是可迭代

class EmailForm(forms.Form): 
    recipient = forms.CharField(max_length=14, min_length=12, 
widget=forms.TextInput(attrs=require)) 
    message = forms.CharField(max_length=140, min_length=1, 
widget=forms.Textarea(attrs={'cols': 30, 'rows': 5})) 

一种形式和我的网站的网址是

admin.autodiscover() 
urlpatterns = patterns('', (r'^admin/(.*)', 
include(admin.site.urls)),) 

现在我希望它显示管理界面

对我试过到目前为止

首次尝试

from myapps.forms import EmailForm 
class EmailAdmin(admin.ModelAdmin): 
    form = EmailForm 
did not work Exception Value: 
'DeclarativeFieldsMetaclass' object is not iterable 

第二次尝试 ,现在我跟着http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contri ... ,但不能得到帮助

class EmailAdmin(admin.ModelAdmin): 
    def my_view(self,request): 
     return admin_my_view(request,self) 

    def get_urls(self): 
     urls = super(SmsAdmin, self).get_urls() 
     my_urls = patterns('',(r'^my_view/ 
$',self.admin_site.admin_view(self.my_view))) 
     return my_urls + urls 

def admin_my_view(request, model_admin): 
    opts = model_admin.model._meta 
    admin_site = model_admin.admin_site 
    has_perm = request.user.has_perm(opts.app_label \ 
    + '.' + opts.get_change_permission()) 
    context = {'admin_site': admin_site.name, 
    'title': "My Custom View", 
    'opts': opts, 
    'root_path': '/%s' % admin_site.root_path, 
    'app_label': opts.app_label, 
    'has_change_permission': has_perm} 
    template = 'admin/demo_app/admin_my_view.html' 
    return render_to_response(template, 
context,context_instance=RequestContext(request)) 
admin.site.register(EmailForm,EmailAdmin) 

,当我在浏览器中运行的本地主机服务器和类型:8000 /管理员 和回车键

Exception Value: 
'DeclarativeFieldsMetaclass' object is not iterable 

第二次刚刚第一次当我再次进入然后显示 我的管理页面,但我c在管理界面中没有看到我的EmailAdmin ..

只是帮我或建议我的任何链接。

感谢

回答

0

(这是我在重新格式化你的模型代码尝试):

class EmailForm(forms.Form): 
    recipient = forms.CharField(max_length=14, min_length=12, 
     widget=forms.TextInput(attrs=require)) 
    message = forms.CharField(max_length=140, min_length=1, 
     widget=forms.Textarea(attrs={'cols': 30, 'rows': 5})) 

我愿意把我的钱,说:“attrs=require”位 - 如果这不是一个错字。

你想要什么,而不是是这样的:

recipient = forms.CharField(max_length=14, min_length=12, 
     widget=forms.TextInput(), required=True)