django admin 扩展

添加自定义动作:

例子,添加一个方法,批量更新文章,代码如下:

from django.contrib import admin
from myapp.models import Article

def make_published(self, request, queryset):
    rows_updated = queryset.update(status=’p’)
    if rows_updated == 1:
        message_bit = "1 story was"
    else:
        message_bit = "%s stories were" % rows_updated
    self.message_user(request, "%s successfully marked as published." % message_bit)

class ArticleAdmin(admin.ModelAdmin):
    list_display = [’title’, ’status’]
    ordering = [’title’]
    actions = [make_published]

admin.site.register(Article, ArticleAdmin)

  

效果如下:

自定义动作的权限控制,重载get_actions方法,如下:(只允许名字以J大头的删除记录)

from django.contrib import admin
from myapp.models import Article

def make_published(self, request, queryset):
    rows_updated = queryset.update(status=’p’)
    if rows_updated == 1:
        message_bit = "1 story was"
    else:
        message_bit = "%s stories were" % rows_updated
    self.message_user(request, "%s successfully marked as published." % message_bit)

class ArticleAdmin(admin.ModelAdmin):
    list_display = [’title’, ’status’]
    ordering = [’title’]
    actions = [make_published]

    def get_actions(self, request):
        actions = super(MyModelAdmin, self).get_actions(request)
        if request.user.username[0].upper() != ’J’:
            if ’delete_selected’ in actions:
                del actions[’delete_selected’]
        return actions

  

时间: 2024-12-28 21:45:20

django admin 扩展的相关文章

Django admin 组件 原理分析与扩展使用 之 sites.py (一)

一 . 前言 Django 提供了admin 组件 为项目提供基本的管理后台功能(对数据表的增删改查). 本篇文章通过 admin源码 简单分析admin 内部原理 ,扩展使用方式,为以后进行定制和自己开发组件做铺垫. 二. 简单使用 1.在app 目录下的admin.py 中通过注册表 from django.contrib import admin from blog01.models import * admin.site.register([UserInfo,User,Blog]) #

Django admin注册model究竟要怎么写才优雅 批量注册model

比如在Django admin 注册models时,会用到. 对于APP里自带的models,可以使用这种方式注册. from django.contrib import admin # Register your models here. from django.apps import apps from django.contrib.admin.sites import AlreadyRegistered #获取app:api下所有的model得到一个生成器 app_models=apps.

django admin配置以及使用

django  admin配置以及使用 知识预览 admin组件使用 admin源码解析 admin组件使用 Django 提供了基于 web 的管理工具(django 2.0+, python3.6+). Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTALLED_APPS 看到它: # Application definition# 新建一个应用名为mysite,注册application INSTALLED_APP

Django admin 中抛出 'WSGIRequest' object has no attribute 'user'的错误

这是Django版本的问题,1.9之前,中间件的key为MIDDLEWARE_CLASSES, 1.9之后,为MIDDLEWARE.所以在开发环境和其他环境的版本不一致时,要特别小心,会有坑. 将settings里的MIDDLEWARE_CLASSES默认配置顺序改成如下 MIDDLEWARE_CLASSES = [ 'django.middleware.security.SecurityMiddleware', 'django.middleware.common.CommonMiddlewar

Django Admin site 显示问题

Django Admin site 显示问题 今天配置了一下Django admin site,可是admin site的显示有一些问题,当我打开源码.訪问里面的admin 的css 文件时候,http://localhost:8000/static/admin/css/base.css, 却得到了一个404界面错误. 这里提供几个解决方式: 1. 在 settings.py 文件内, 把 django.contrib.staticfiles 增加到 INSTALLED_APPS 在又一次启动s

Django admin 的 9 个技巧

Tip 1:Django admin 后台不限于用 Django 开发的网站 虽然 Django admin 管理界面可以非常友好的用在 Django 项目的其它部分,它同样可以很容易用于其它像传统的数据库或具有一个可怕的的管理界面的网站.而且这也是评估 Django 是否会满足您的需求的最佳途径. 你需要做的仅是: 在你的 Django 项目中建立一个新的应用,并确保你已经连接好传统数据库 ,通过 settings.py 文件中的 DATABASES 的设置. 将你的数据表定义为 Django

django admin页面样式丢失问题

wamp 配置django admin页面样式丢失问题 第一种方法:在apache配置文件httpd.conf中加入如下代码:Alias /static "E:\Python27\Lib\site-packages\django\contrib\admin\static"<Directory "E:\Python27\Lib\site-packages\django\contrib\admin"> Options Indexes FollowSymLin

Django admin

Django admin使用 官方文档: https://docs.djangoproject.com/en/dev/ref/contrib/admin/# 一.list_display = ('title', 'pub_date', 'update_time',) ModelAdmin.list_display  class Person(models.Model): first_name = models.CharField(max_length=50) last_name = models

Django admin site(一)ModelAdmin Options

Admin管理界面是django的杀手级应用.它读取你模式中的元数据,然后提供给你一个强大而且可以使用的界面,网站管理者可以用它立即向网站中添加内容. 要使用admin,可以按照下面的步骤: 将'django.contrib.admin'加入setting的INSTALLED_APPS配置中. 保证INSTALLED_APPS中包含'django.contrib.auth','django.contrib.contenttypes','django.contrib.messages'和'djan