Django admin进阶
1.
ModelAdmin.inlines
将有外键的子类包含进视图 ,实例:
class Author(models.Model):
name = models.CharField(max_length=100) class Book(models.Model):
author = models.ForeignKey(Author)
title = models.CharField(max_length=100)
class BookInline(admin.TabularInline):
model = Book class AuthorAdmin(admin.ModelAdmin):
inlines = [
BookInline,
]
2.
list_display = ('first_name', 'last_name')
列表显示字段。记住:他不会显示manytomany字段
特殊用法:
class Person(models.Model):
first_name = models.CharField(max_length=50)
birthday = models.DateField() def born_in_fifties(self):
return self.birthday.strftime('%Y')[:3] == '195'
born_in_fifties.boolean = True class PersonAdmin(admin.ModelAdmin):
list_display = ('name', 'born_in_fifties')
将生日为195的设置为true,并且显示对号或者横线。 用途,学生成绩是否及格,当大于60设置为true。
list_display = ('__unicode__', 'some_other_field')
colored_first_name.admin_order_field = 'first_name'
设置字段排序
list_display_links = ('first_name', 'last_name')
设置超链接字段
3.ModelAdmin.list_editable
设置列表字段是否可以编辑,常用语文章更改目录,修改某些非外键字段。不过外键也可以修改,如果某个字段设置为links,则该字段不能被修改
# raw_id_fields = ('goods',)
# list_editable=('goods','price','num','producer','in_times','is_active')
4.
list_filter = ('is_staff', 'company')
过滤字段。
自定义过滤字段:
from datetime import date from django.utils.translation import ugettext_lazy as _
from django.contrib.admin import SimpleListFilter class DecadeBornListFilter(SimpleListFilter):
title = _('decade born')#过滤标题 # 设置url参数,?decade='80s'
parameter_name = 'decade' def lookups(self, request, model_admin):
"""
值,显示属性
"""
return (
('80s', _('in the eighties')),
('90s', _('in the nineties')),
) def queryset(self, request, queryset):
"""
过滤
"""
if self.value() == '80s':
return queryset.filter(birthday__gte=date(1980, 1, 1),
birthday__lte=date(1989, 12, 31))
if self.value() == '90s':
return queryset.filter(birthday__gte=date(1990, 1, 1),
birthday__lte=date(1999, 12, 31)) class PersonAdmin(ModelAdmin):
list_filter = (DecadeBornListFilter,)
from django.contrib.admin import BooleanFieldListFilter class PersonAdmin(ModelAdmin):
list_filter = (
('is_staff', BooleanFieldListFilter),
)
boolean类型的filter
class FilterWithCustomTemplate(SimpleListFilter):
template = "custom_template.html"
自定义过滤器模板默认模板 admin/filter.html
5.
list_max_show_all
显示全部 最大数据,总数据超过该数据将不显示显示全部
list_per_page
没页显示数据条数
ordering
排序
class ArticleAdmin(admin.ModelAdmin):
prepopulated_fields = {"字段1": ("ziduan2",)}
当字段1填写数据的同时,字段2也同时被填充,数据一致
class PersonAdmin(admin.ModelAdmin):
radio_fields = {"group": admin.VERTICAL}
单选按钮,适用于开关(必须填)。如是否有效
class ArticleAdmin(admin.ModelAdmin):
raw_id_fields = ("newspaper",)
外键选择
from django.utils.html import format_html_join
from django.utils.safestring import mark_safe class PersonAdmin(ModelAdmin):
readonly_fields = ('address_report',) def address_report(self, instance):
# assuming get_full_address() returns a list of strings
# for each line of the address and you want to separate each
# line by a linebreak
return format_html_join(
mark_safe('<br/>'),
'{0}',
((line,) for line in instance.get_full_address()),
) or "<span class='errors'>I can't determine this address.</span>" # short_description functions like a model field's verbose_name
address_report.short_description = "Address"
# in this example, we have used HTML tags in the output
address_report.allow_tags = True
只读,注意:可以向模板页面一样格式化数据,同时给只读属性增加自定义样式。
6.
6.ModelAdmin.save_as
当是修改数据的时候,将新增一个替换为保存为新的,并且旧的不替换,新增id保存
7.
ModelAdmin.save_on_top
设置保存按钮到顶部!
8.
search_fields = ['foreign_key__related_fieldname']
设置搜索。
Django admin进阶的更多相关文章
- Python之路【第十七篇】:Django【进阶篇 】
Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...
- Python之路【第十七篇】:Django【进阶篇】
Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...
- Python开发【第二十二篇】:Web框架之Django【进阶】
Python开发[第二十二篇]:Web框架之Django[进阶] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 ...
- Python之路【第十七篇】:Django【进阶篇 】(转自银角大王博客)
Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行 ...
- Python自动化开发 - Django【进阶篇】
Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行 ...
- 06: Django Admin
目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...
- Django admin美化插件suit应用[原创]
前言 由于比较懒,自己弄了一个用户验证,没有自己写后台,用了django自带的user认证,并通过admin直接进行管理,但默认的admin并不漂亮,于是使用了这个django-suit插件,效果对比 ...
- Django admin 权威指南(一)
版本: Django 1.10 此部分由官方文档<6.5.1 The Django admin site>翻译而来. 6.5.1.1 概览 默认情况下,使用startproject的时候, ...
- Django admin 显示图片
我有一个表用来储存轮播图片,有一个 `picture` 字段储存的是图片的url,图片的 url 通过上传文件到 cdn 获得.目前这个表的编辑是通过自定义一个 `ModelForm`,然后重写 Dj ...
随机推荐
- 【NOI2004】郁闷的出纳员
[问题描述] OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的 ...
- 赋值,copy和deepcopy
python的复制,拷贝,和深拷贝. >>> a=[23,3]>>> b=a>>> b.append(234)>>> a[23, ...
- Idea中运行Testng时,报SAXParseException:parallel为none的问题原因及解决
今天更新了testng的版本为6.9.10, 在idea中运行测试案例时,报错如下: org.testng.TestNGException: org.xml.sax.SAXParseException ...
- yzoi1109&&viojs1042最小步数的一点看法——回文数
Description - 问题描述 有一天,雄霸传授本人风神腿法第一式:捕风捉影..............的步法(弟子一:堂主,你大喘气呀.风:你给我闭嘴.)捕风捉影的关键是换气(换不好就会大喘气 ...
- Excel等外部程序点击链接会带上IE信息的bug
今天碰到一个问题,在Excel内点击链接到默认浏览器Chrome打开,奇怪的是服务端收到的Session一直对不上. 查了很久发现这个Excel到Chrome的跳转竟然带上了IE的Cookie 和 U ...
- Javascript中null值,特别注意的两点
null 是一个javascript字面量,表示空值,就是没有对象被呈现.他是javascript原始值之一.null值常被放在期望一个对象上,但是不引用任何对象的参数位置,也就是说对象的初始化. 我 ...
- 谈谈 jQuery 中的防冲突(noConflict)机制
许多的 JS 框架类库都选择使用 $ 符号作为函数或变量名,jQuery 是其中最为典型的一个.在 jQuery 中,$ 符号只是 window.jQuery 对象的一个引用,因此即使 $ 被删除,w ...
- newman安装时遇到问题的解决
npm安装newman时系统提示需要安装.net framwork环境 通过查询文档安装visual studio express: 于是安装visual studio 2012 express. 安 ...
- 独家分享——大牛教你如何学习Web前端开发
2014-12-18 14:35:42 引语 自从2008年接触网站开发以来到现在已经有六个年头了,今天偶然整理电脑资料看到当时为参加系里面一个比赛而做的第一个网站时,勾起了在这网站开发道路上 ...
- Node.js流
什么是流? 流是可以从一个源读取或写入数据到连续的目标对象.在Node.js,有四种类型的数据流. Readable - 其是用于读操作. Writable - 用在写操作. Duplex - 其可以 ...