Django 1.6Admin

来源:互联网 发布:python全栈是什么意思 编辑:程序博客网 时间:2024/05/16 05:52

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 = Bookclass 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 = Trueclass 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 datefrom django.utils.translation import ugettext_lazy as _from django.contrib.admin import SimpleListFilterclass 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 BooleanFieldListFilterclass 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_joinfrom django.utils.safestring import mark_safeclass 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']
设置搜索。


原创粉丝点击