我正在建立一个博客,模型“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 文件中的设置之间存在某种干扰,这使我无法注册富编辑器和 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' object is not iterable”。有谁知道如何解决这个问题,以便我可以在同一页面上同时拥有我的 PostAdmin 和富编辑器?