2013-07-17 41 views
1

我目前正在使用Django框架将内容管理系统构建到公司网站中,并且在成功完成一个页面后,开始在需要丰富的不同页面上工作文本编辑器在管理界面。Django TinyMCE:'ModelFormMetaclass'对象不可迭代

选择了TinyMCE作为工作之后,我在周一花了很多时间试图让它正常运行,但只管理了一个简单的HTMLField()。被许多不同的教程略微困惑,我现在遇到了一个错误,我正在努力寻找解决方案,而且我希望StackOverflow社区可以帮助解决这个问题。

目前,我有以下代码:

admin.py 

    from django.forms import * 
    from django.db.models import * 
    from tinymce.widgets import TinyMCE 
    from models import * 
    from django.contrib import admin 

    #class MyModelForm(forms.ModelForm): 
     #content = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 10})) 

     #class Meta: 
      #model = MyModel 

    class MyModelAdmin(admin.ModelAdmin): 
     form = MyModelForm 

    admin.site.register(MyModelForm, MyModelAdmin) 

大部分此类代码已被注释掉进行调试,因为这个问题似乎与models.py:

models.py 

    from django import forms 
    from django.contrib.flatpages.models import FlatPage 
    from tinymce.widgets import TinyMCE 

    class MyModelForm(forms.ModelForm): 
     content = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows' : 30})) 

     class Meta: 
      model = FlatPage 

这是我正在提供的回溯:

Environment: 


Request Method: GET 
Request URL: mycomputer.mydomain/company/admin/ 

Django Version: 1.5.1 
Python Version: 2.7.3 
Installed Applications: 
('django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.admin', 
'django.contrib.admindocs', 
'cms', 
'mptt', 
'menus', 
'south', 
'sekizai', 
'cms.plugins.file', 
'cms.plugins.link', 
'cms.plugins.picture', 
'cms.plugins.text', 
'reversion', 
'grappelli', 
'profiles', 
'tinymce', 
'testapp', 
'django_reset') 
Installed Middleware: 
('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'cms.middleware.page.CurrentPageMiddleware', 
'cms.middleware.user.CurrentUserMiddleware', 
'cms.middleware.toolbar.ToolbarMiddleware') 


Traceback: 
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response 
    103.      resolver_match = resolver.resolve(request.path_info) 
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in resolve 
    319.    for pattern in self.url_patterns: 
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in url_patterns 
    347.   patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in urlconf_module 
    342.    self._urlconf_module = import_module(self.urlconf_name) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py" in import_module 
    35.  __import__(name) 
File "/home/systems/vhost-trunk/djangocms/companycms/companycms/urls.py" in <module> 
    7. admin.autodiscover() 
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/__init__.py" in autodiscover 
    29.    import_module('%s.admin' % app) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py" in import_module 
    35.  __import__(name) 
File "/home/systems/vhost-trunk/djangocms/companycms/testapp/admin.py" in <module> 
    17. admin.site.register(MyModelForm, MyModelAdmin) 
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/sites.py" in register 
    77.   for model in model_or_iterable: 

Exception Type: TypeError at /admin/ 
Exception Value: 'ModelFormMetaclass' object is not iterable 

正如您所看到的,tinymce似乎正确安装,并且问题在于模型。模型

我的目标是,如果不清楚,是创建一个带有一个内容字段的简单MyModel模型,可以使用TinyMCE编辑器进行编辑。如果您认为我可以提供更多代码以更好地了解情况,请告诉我。谢谢。

+0

如果你需要TinyMCE用于Django管理检查这个要点https://gist.github.com/bofh19/6021510这是一个简单的hack的base_site.html和使Django的管理员使用tinyMCE在所有textarea字段 – boltsfrombluesky

+0

嗨,感谢您的帮助。当我尝试使用您的代码时,我收到了一个GET 404错误,表示无法找到主题,现在我收到与我自己本地版本的脚本相同的错误: GET http://.../ company/admin/contact/column/1/themes/modern/theme.js/404(NOT FOUND)tiny_mce.js:7551 无法加载:http://.../company/admin/contact/column/1 //themes/modern/theme.js –

+0

嗨..我还没有在models.py或admin.py中使用任何编辑...只是在admin/base_site.html中创建了一个文件,并在gist中添加了内容..这里是我的网站http://backpaper.w4rlock.in/media/image/ss.png的屏幕截图 – boltsfrombluesky

回答

0

我觉得我有点用你的模型定义感到困惑,无论哪种方式,我认为你的错误是在这一行

admin.site.register(MyModelForm, MyModelAdmin) 

除非我被名字MyModelForm你传递的ModelForm来上当以models.Model子类作为参数的注册方法。

0

这真的是晚了派对,但这是你需要的。

admin.site.register(MyModel, MyModelAdmin)

MyModelAdminMyModelFormadmin.site.register需要ModelModelAdmin