django admin 的操作 新

点我

在settings.py中加上

LANGUAGE_CODE = 'zh-Hans'

就可以在admin页面中显示中文了

models.py

from django.db import models
from django.contrib.auth.models import User as Usersss

# Create your models here.

class User(models.Model):
    name = models.CharField(max_length=48, null=False, verbose_name='姓名')
    password = models.CharField(max_length=48, null=False, verbose_name='密码') #verbose_name='密码'这个字段可以定义amdin页中现限时的内容
    email = models.EmailField( verbose_name='邮箱')
    role = models.ForeignKey(to='Role', on_delete=None,null=True)

    class Meta:
        db_table = 'appad_user'
        verbose_name_plural = verbose_name = '用户'  #当是复数和单数时使用那个表名

    def get_email(self):
        return self.email +'hahaha'


class Role(models.Model):
    choice = (
        (1, '技术部'),
        (2, '行政'),
        (3, '人事'),
        (4, "财务"),
    )
    role_name = models.IntegerField(choices=choice,default=1,null=False)
    authors = models.ManyToManyField(to='Authority',default=None)

    def __str__(self):
        return self.choice[self.role_name-1][1]


class Authority(models.Model):
    name = models.CharField(max_length=32)

 

admin.py

from django.contrib import admin

# Register your models here.
from app01 import models


class UserInline(admin.StackedInline): # TabularInline
    extra = 0
    model = models.User


class UserAdmin(admin.ModelAdmin):
    search_fields = ['name','email']  # 这里支持搜索多个字段
    list_display_links = ['name'] #可以点击跳转到编辑页,注意不能跟list_editable是相同的字段
    list_editable = ['password']  #可以编辑的列,选定后可以直接编辑
    list_filter = ['name']     #筛选过滤器,可以点选
    # 定制Action行为具体方法
    def func(self, request, queryset):
        print(self, request, queryset)
        print(request.POST.getlist('_selected_action'))

    def edit(self):
        print('123')
        return 123
    list_display = ['name', 'password','role',edit] #这里可以调用写好的函数,并能展示相应的内容,
    func.short_description = "中文显示自定义Actions"
    actions = [func, ]

    # Action选项都是在页面上方显示
    actions_on_top = True
    # Action选项都是在页面下方显示
    actions_on_bottom = False

    # 是否显示选择个数
    actions_selection_counter = True
    # raw_id_fields = ['role',]  #会现实详情

    # fields = ['role',] #添加时可以写入的字段,默认所有字段可以写
    # exclude = ['name',]

    #定制搜索功能
    def get_search_results(self, request, queryset, search_term):
        queryset, use_distinct = super(UserAdmin, self).get_search_results(request, queryset, search_term)
        try:
            search_term_as_int = int(search_term)
            queryset |= self.model.objects.filter(password=search_term_as_int)
        except:
            pass
        return queryset, use_distinct


admin.site.register(models.User, UserAdmin)  # 第一个参数可以是列表


class RoleAdmin(admin.ModelAdmin):
    search_fields = ['role_name']  # 这里支持搜索多个字段
    list_display = ['role_name']
    # inlines = [AuthorityInline]

    list_display_links = ['role_name']
    inlines = [UserInline]#详细页面,如果有其他表和当前表做FK,那么详细页面可以进行动态增加和删除


admin.site.register(models.Role, RoleAdmin)


class AuthorityAdmin(admin.ModelAdmin):
    search_fields = ['name']  # 这里支持搜索多个字段
    list_display = ['name']
    list_display_links = ['name']


admin.site.register(models.Authority, AuthorityAdmin)

 

 

posted on 2018-11-27 17:14  王大拿  阅读(53)  评论(0)    收藏  举报

导航