Django中的Dojo富编辑器:正确的admin.py设置?

Django中的Dojo富编辑器:正确的admin.py设置?,django,dojo,django-admin,rich-text-editor,Django,Dojo,Django Admin,Rich Text Editor,我正在建立一个博客,上面有“Post”和“Image”这样的模型: 我一直在尝试通过以下示例在我的管理站点中实现Dojo富编辑器 在这里: 但是,我的admin.py文件中的设置之间存在某种干扰,使我无法注册rich editor和ModelAdmin类来上载与“Post”实例关联的图像。如果我在admin.py文件中使用以下代码: from django.contrib.admin import site, ModelAdmin import models class CommonMedi

我正在建立一个博客,上面有“Post”和“Image”这样的模型:

我一直在尝试通过以下示例在我的管理站点中实现Dojo富编辑器 在这里:

但是,我的admin.py文件中的设置之间存在某种干扰,使我无法注册rich editor和ModelAdmin类来上载与“Post”实例关联的图像。如果我在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)”行引起的,但是如果我不使用该行,我会得到错误,“模型Post已经注册了。”如果我从“admin.site.register(Post,PostAdmin)”中删除该行和“Post”,我会得到错误:“MediaDefiningClass”对象不可iterable”。是否有人知道如何解决此问题,以便我可以将PostAdmin和rich editor放在同一页面上?

/home/guillome/mysite/blogs/static/editor.js
不正确,您应该在此处提供URL。可能,
/static/editor.js


另外,使用chrome/safari的web inspector或firefox的firebug来捕获控制台中的一些错误。

URL使用哪个前缀?是静态URL前缀,还是settings.py中列出的另一个?你指的是哪一个“另一个”?嗨,ilvar,我修复了这一部分并让富编辑器工作(见上文);非常感谢你在这方面的帮助。我现在的问题是让它工作,同时注册一个ModelAdmin类,允许我上传图像。有什么想法吗?你为什么不把媒体定义放在PostAdmin里面呢?为什么你们需要注册两次PostModel?因为那个太有意义了。我知道我错过了一些愚蠢的事情!我想我只是被lazutkin在他的例子中使用的语法弄糊涂了(site.register()似乎有多种参数)。无论如何,谢谢你的帮助;现在一切都很好。
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)