Django中的Dojo Rich Editor:正确的admin.py设置?

时间:2012-05-02 01:01:35

标签: django dojo django-admin rich-text-editor

我正在建立一个博客,模型“Post”和“Image”就像这样:

class Post(models.Model):
    title = models.CharField(max_length=1000)
    author = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    text = models.TextField(max_length=10000)

class Image(models.Model):
    post = models.ForeignKey(Post, related_name='images')
    image = models.ImageField(upload_to='photos/%Y/%m/%d')
    caption = models.CharField(max_length=1000,blank=True)

我一直在尝试按照示例在我的管理网站中实现Dojo丰富的编辑器 这里:

http://lazutkin.com/blog/2011/mar/13/using-dojo-rich-editor-djangos-admin/

但是,我的admin.py文件中的设置之间存在某种干扰,这使我无法注册富编辑器和用于上传与“Post”实例关联的图像的ModelAdmin类。如果我在admin.py文件中使用以下代码:

from django.contrib.admin import site, ModelAdmin
import models

class CommonMedia:
    js = (
      'https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojo/dojo.xd.js',
      'editor.js',
    )
    css = {
      'all': ('editor.css',),
    }

site.register(models.Post,
    Media = CommonMedia,
)

富文本编辑器显示正常。但是如果我为图像上传字段添加一些代码,就像这样:

from blogs.models import Post,Image
from django.contrib import admin
from django.contrib.admin import site, ModelAdmin
import models


class CommonMedia:
  js = (
    'https://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojo/dojo.xd.js',
    'editor.js',
  )
  css = {
    'all': ('editor.css',),
  }

class PostImageInline(admin.TabularInline):
    model = Image
    extra = 5

class PostAdmin(admin.ModelAdmin):
    inlines = [PostImageInline]

site.register(models.Post,
    list_display = ('text',),
    search_fields = ['text',],
    Media = CommonMedia,
)

admin.site.unregister(Post)

admin.site.register(Post, PostAdmin)

富编辑器没有显示出来。我猜这是由于“admin.site.unregister(Post)”行,但如果我不使用它我得到错误,“模型帖已经注册。”如果我删除该行和“admin.site.register(Post,PostAdmin)”中的“Post”,我得到错误:“'MediaDefiningClass'对象不可迭代”。有谁知道如何解决这个问题,所以我可以将我的PostAdmin和富编辑器放在同一页面上?

1 个答案:

答案 0 :(得分:2)

/home/guillaume/mysite/blogs/static/editor.js不正确,您应在此处提供网址。可能是/static/editor.js

另外,使用web检查器进行chrome / safari或firebug for firefox来捕获控制台中的一些错误。