开发者社区> demon_coffee> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Django - Admin

简介: Django - Admin 1. 后台注册 每个 app 下都有一个 admin.py 文件,打开文件将你要添加的modules中的一个类注册到admin from django.
+关注继续查看
Django - Admin

1. 后台注册

每个 app 下都有一个 admin.py 文件,打开文件将你要添加的modules中的一个类注册到admin

from django.contrib import admin
from .models import Article

admin.site.register(Article)

在后台添加两条记录,默认看到的两条记录的名字是一样的,这样我们必须点进去才知道两个的区别,这个需要修改modules来处理:

# coding:utf-8
from django.db import models


class Article(models.Model):
    title = models.CharField(u'标题', max_length=256)
    content = models.TextField(u'内容')

    pub_date = models.DateTimeField(u'发表时间', auto_now_add=True, editable = True)
    update_time = models.DateTimeField(u'更新时间',auto_now=True, null=True)

    def __unicode__(self):# 在Python3中用 __str__ 代替 __unicode__
        return self.title

# 处理 python2.X和python3.X的兼容问题

# coding:utf-8
from __future__ import unicode_literals

from django.db import models
from django.utils.encoding import python_2_unicode_compatible

@python_2_unicode_compatible
class Article(models.Model):
    title = models.CharField('标题', max_length=256)
    content = models.TextField('内容')

    pub_date = models.DateTimeField('发表时间', auto_now_add=True, editable = True)
    update_time = models.DateTimeField('更新时间',auto_now=True, null=True)

    def __str__(self):
        return self.title
2. 在列表显示中添加与字段相关的其它内容

from django.contrib import admin
from .models import Article

class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title','pub_date','update_time',)

admin.site.register(Article,ArticleAdmin)
3. 在列表现实中添加与字段无关的其它内容

# modules.py
class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)

    def my_property(self):
        return self.first_name + ' ' + self.last_name
    my_property.short_description = "Full name of the person"

    full_name = property(my_property)
# admin.py
from django.contrib import admin
from .models import Article, Person


class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title', 'pub_date', 'update_time',)


class PersonAdmin(admin.ModelAdmin):
    list_display = ('full_name',)

admin.site.register(Article, ArticleAdmin)
admin.site.register(Person, PersonAdmin)
4. 一些常用功能
4.1 搜索功能

search_fields = ('title', 'content',)
4.2 筛选功能

list_filter = ('status',) # 根据文章的状态筛选
一些简单的使用例子:

# 定制加载的列表, 根据不同的人显示不同的内容列表,比如输入员只能看见自己输入的,审核员能看到所有的草稿,这时候就需要重写get_queryset方法
class MyModelAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        qs = super(MyModelAdmin, self).get_queryset(request)
        if request.user.is_superuser:
            return qs
        else:
            return qs.filter(author=request.user)
# 该类实现的功能是如果是超级管理员就列出所有的,如果不是,就仅列出访问者自己相关的
# 定制搜索功能(django 1.6及以上才有)
class PersonAdmin(admin.ModelAdmin):
    list_display = ('name', 'age')
    search_fields = ('name',)

    def get_search_results(self, request, queryset, search_term):
        queryset, use_distinct = super(PersonAdmin, self).get_search_results(request, queryset, search_term)
        try:
            search_term_as_int = int(search_term)
            queryset |= self.model.objects.filter(age=search_term_as_int)
        except:
            pass
        return queryset, use_distinct
# queryset 是默认的结果,search_term 是在后台搜索的关键词
# 修改保存时的一些操作,可以检查用户,保存的内容等,比如保存时加上添加人
from django.contrib import admin

class ArticleAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        obj.user = request.user
        obj.save()


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
细说Django的admin
在admin.py中只需要将地Model中某个类注册,即可在Admin中进行增删查改的功能,例如: admin.site.register(models.UserInfo) 这种方式比较简单,如果想要进行更多的定制操作,就需要利用ModelAdmin进行操作 方式一 from django.
717 0
DjangoORM 操作 | 学习笔记
快速学习 DjangoORM 操作
50 0
Django框架之ORM
Django框架之ORM
64 0
django的orm中F对象的使用
今天不巧就用上了。 就是将数据库的字段,自增1的场景。 from django.db.models import F DeployPool.objects.filter(name=deployversion_id).
1218 0
Django中的ORM
1. 数据库的配置 Django可以配置使用sqlite3,mysql,oracle,postgresql等数据库 在一个Django项目中,默认使用的是sqlite3数据库 DATABASES = { 'default': { 'ENGINE': 'django.
949 0
Django学习(第四天:ORM&Model)
ORM,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。 Model from django.utils import timezone # Create your models here.
953 0
Django ORM模型:想说爱你不容易
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载。   使用Python的Django模型的话,一般都会用它自带的ORM(Object-relational mapping)模型。
1159 0
+关注
demon_coffee
全栈工程师(正在进行中~~~)
83
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载