usersmodels三张表注册进xadmin, 配置搜索过滤展示字段,修复xadmin导出csv乱码,修复django2.0.1的indexError, str重载。对应5-3
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
# encoding: utf-8
|
||||
__author__ = 'mtianyan'
|
||||
__date__ = '2018/1/9 0009 08:02'
|
||||
|
||||
import xadmin
|
||||
|
||||
from .models import EmailVerifyRecord, Banner
|
||||
|
||||
|
||||
# 创建admin的管理类,这里不再是继承admin,而是继承object
|
||||
class EmailVerifyRecordAdmin(object):
|
||||
# 配置后台我们需要显示的列
|
||||
list_display = ['code', 'email','send_type', 'send_time']
|
||||
# 配置搜索字段,不做时间搜索
|
||||
search_fields = ['code', 'email', 'send_type']
|
||||
# 配置筛选字段
|
||||
list_filter = ['code', 'email', 'send_type', 'send_time']
|
||||
|
||||
# 创建banner的管理类
|
||||
class BannerAdmin(object):
|
||||
list_display = ['title', 'image', 'url','index', 'add_time']
|
||||
search_fields = ['title', 'image', 'url','index']
|
||||
list_filter = ['title', 'image', 'url','index', 'add_time']
|
||||
|
||||
|
||||
xadmin.site.register(EmailVerifyRecord, EmailVerifyRecordAdmin)
|
||||
# 将model与admin管理器进行关联注册
|
||||
xadmin.site.register(Banner, BannerAdmin)
|
||||
+16
-6
@@ -26,12 +26,13 @@ class UserProfile(AbstractUser):
|
||||
# 地址
|
||||
address = models.CharField(max_length=100, verbose_name="地址", default="")
|
||||
# 电话
|
||||
mobile = models.CharField(max_length=11, null=True, blank=True)
|
||||
mobile = models.CharField(max_length=11, null=True, blank=True, verbose_name=u"电话")
|
||||
# 头像 默认使用default.png
|
||||
image = models.ImageField(
|
||||
upload_to="image/%Y/%m",
|
||||
default=u"image/default.png",
|
||||
max_length=100
|
||||
max_length=100,
|
||||
verbose_name=u"头像"
|
||||
)
|
||||
|
||||
# meta信息,即后台栏目名
|
||||
@@ -54,17 +55,21 @@ class EmailVerifyRecord(models.Model):
|
||||
code = models.CharField(max_length=20, verbose_name=u"验证码")
|
||||
# 未设置null = true blank = true 默认不可为空
|
||||
email = models.EmailField(max_length=50, verbose_name=u"邮箱")
|
||||
send_type = models.CharField(choices=SEND_CHOICES, max_length=10)
|
||||
send_type = models.CharField(choices=SEND_CHOICES, max_length=10, verbose_name=u"验证码类型")
|
||||
# 这里的now得去掉(),不去掉会根据编译时间。而不是根据实例化时间。
|
||||
send_time = models.DateTimeField(default=datetime.now)
|
||||
send_time = models.DateTimeField(default=datetime.now, verbose_name=u"发送时间")
|
||||
|
||||
class Meta:
|
||||
verbose_name = "邮箱验证码"
|
||||
verbose_name_plural = verbose_name
|
||||
|
||||
|
||||
# 重载str方法使后台不再直接显示object
|
||||
def __str__(self):
|
||||
return '{0}({1})'.format(self.code, self.email)
|
||||
|
||||
|
||||
# 轮播图model
|
||||
|
||||
|
||||
class Banner(models.Model):
|
||||
title = models.CharField(max_length=100, verbose_name=u"标题")
|
||||
image = models.ImageField(
|
||||
@@ -79,3 +84,8 @@ class Banner(models.Model):
|
||||
class Meta:
|
||||
verbose_name = u"轮播图"
|
||||
verbose_name_plural = verbose_name
|
||||
|
||||
|
||||
# 重载__str__方法使后台不再直接显示object
|
||||
def __str__(self):
|
||||
return '{0}(位于第{1}位)'.format(self.title, self.index)
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 37 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 37 KiB |
@@ -221,7 +221,7 @@ class ExportPlugin(BaseAdminPlugin):
|
||||
def get_response(self, response, context, *args, **kwargs):
|
||||
file_type = self.request.GET.get('export_type', 'csv')
|
||||
response = HttpResponse(
|
||||
content_type="%s; charset=UTF-8" % self.export_mimes[file_type])
|
||||
content_type="%s; charset=gbk" % self.export_mimes[file_type])
|
||||
|
||||
file_name = self.opts.verbose_name.replace(' ', '_')
|
||||
response['Content-Disposition'] = ('attachment; filename=%s.%s' % (
|
||||
|
||||
@@ -72,7 +72,10 @@ class AdminSplitDateTime(forms.SplitDateTimeWidget):
|
||||
forms.MultiWidget.__init__(self, widgets, attrs)
|
||||
|
||||
def render(self, name, value, attrs=None):
|
||||
input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).split('\n') if ht != '']
|
||||
input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).split('/><') if ht != '']
|
||||
if (len(input_html) > 1):
|
||||
input_html[0] = input_html[0] + "/>"
|
||||
input_html[1] = "<" + input_html[1]
|
||||
# return input_html
|
||||
return mark_safe('<div class="datetime clearfix"><div class="input-group date bootstrap-datepicker"><span class="input-group-addon"><i class="fa fa-calendar"></i></span>%s'
|
||||
'<span class="input-group-btn"><button class="btn btn-default" type="button">%s</button></span></div>'
|
||||
|
||||
Reference in New Issue
Block a user