问题描述
我的文章正文内容和其他属性内容分了两个表写的,models内容编辑如下:
class detail(models.Model):
FLAG_CHOICES = (
(u'o', u'普通'),
(u'f', u'幻灯'),
(u'h', u'头条'),
(u'c', u'推荐'),
(u'a', u'特别'),
)
typeid = models.ForeignKey(artlist,verbose_name='所属栏目',on_delete=models.CASCADE)
title = models.CharField(verbose_name='标题',max_length=120)
keywords = models.CharField(verbose_name='关键词', max_length=150, null=True, blank=True)
description = models.CharField(verbose_name='描述', max_length=150, null=True, blank=True)
tags = models.CharField(verbose_name='tag标签',max_length=255,null=True,blank=True)
flag = models.CharField(verbose_name='属性',max_length=2, choices=FLAG_CHOICES,default='o')
limg = models.ImageField(verbose_name='缩略图',default='webimages/default.jpg',null=True)
pubdate = models.DateTimeField(verbose_name='发布时间',auto_now_add=True)
clicks = models.IntegerField(verbose_name='浏览量',default=random.randint(599,9955))
istopping = models.BooleanField(verbose_name='是否置顶',default=0)
def __str__(self):
return self.title
class Meta:
verbose_name_plural = '文章列表'
class detailct(models.Model):
content = UEditorField('内容', width=800, height=500,
toolbars="full", imagePath="upimg/", filePath="upfile/",
upload_settings={"imageMaxSize": 1204000},
settings={}, command=None, blank=True
)
detail = models.OneToOneField("detail", on_delete=models.CASCADE)
# def __str__(self):
# return self.description
class Meta:
verbose_name_plural = '文章正文'
现在的adminx.py是这样写的:
class detailAdmin(object):
list_display = ('id','typeid', 'title','tags','flag','pubdate','clicks','istopping')
search_fields = ('title',)
但是后台编辑文章的时候怎么才能显示出正文内容的编辑呢?
你可以参考下: 我看你是不是没有配置插件
这是UEditorField函数
content=UEditorField(verbose_name='博客内容',
width=700,
height=400,
toolbars='full',
imagePath='ueditor/images/',
filePath='ueditor/files/',
upload_settings={'imageMaxSizing':1024000},
default='')
xadmin中添加插件ueditor
由于已经将xadmin源文件拷贝到了项目下,为extra_apps/xadmin,在xadmin下的plugin中新建一个ueditor.py文件,添加以下代码:
import xadmin
from xadmin.views import BaseAdminPlugin, CreateAdminView, ModelFormAdminView, UpdateAdminView
from DjangoUeditor.models import UEditorField
from DjangoUeditor.widgets import UEditorWidget
from django.conf import settings
class XadminUEditorWidget(UEditorWidget):
def __init__(self,**kwargs):
self.ueditor_options=kwargs
self.Media.js = None
super(XadminUEditorWidget,self).__init__(kwargs)
class UeditorPlugin(BaseAdminPlugin):
def get_field_style(self, attrs, db_field, style, **kwargs):
if style == 'ueditor':
if isinstance(db_field, UEditorField):
widget = db_field.formfield().widget
param = {}
param.update(widget.ueditor_settings)
param.update(widget.attrs)
return {'widget': XadminUEditorWidget(**param)}
return attrs
def block_extrahead(self, context, nodes):
js = '<script type="text/javascript" src="%s"></script>' % (settings.STATIC_URL + "ueditor/ueditor.config.js") #自己的静态目录
js += '<script type="text/javascript" src="%s"></script>' % (settings.STATIC_URL + "ueditor/ueditor.all.min.js") #自己的静态目录
nodes.append(js)
xadmin.site.register_plugin(UeditorPlugin, UpdateAdminView)
xadmin.site.register_plugin(UeditorPlugin, CreateAdminView)
将ueditor插件添加到plugins中的__init__.py的PLUGINS中
找到app下的adminx.py文件,配置插件
配置上传文件的加载路径
在settings里面配置
MEDIA_URL='/media/'
MEDIA_ROOT=os.path.join(BASE_DIR,'media')
在settings里面配置
from django.views.static import serve
在urls里面配置
url(r'^media/(?P
在xadmin.py里面 class detailctAdmin 添加:
list_editable = ['detail']
试试?