【问题标题】:Django-Admin Exception Value: 'DeclarativeFieldsMetaclass' object is not iterableDjango-Admin 异常值:“DeclarativeFieldsMetaclass”对象不可迭代
【发布时间】:2011-01-26 02:53:52
【问题描述】:

forms.py 中有一个表单

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)

当我运行服务器并在浏览器上键入 localhost:8000/admin 然后按回车键

Exception Value:
'DeclarativeFieldsMetaclass' object is not iterable

第二次就在我第一次进入之后,然后它显示 我的管理页面,但我在管理界面中看不到我的 EmailAdmin..

请帮助我或建议我任何链接。

谢谢

【问题讨论】:

    标签: django-admin


    【解决方案1】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-04
      • 2021-02-04
      • 2020-02-28
      • 2013-05-07
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 2020-05-25
      相关资源
      最近更新 更多