1. # -*- coding:utf-8 -*-
  2. from django.contrib import admin
  3. from django.contrib.auth.models import User
  4. from django_admin.models import Employee
  5. from django.contrib.auth.backends import ModelBackend
  6. from django.contrib.auth.hashers import make_password
  7. from django.utils.translation import ugettext, ugettext_lazy as _
  8. class EmployeeInline(admin.StackedInline):
  9. model = Employee
  10. can_delete = False
  11. max_num = 1
  12. class MyModelAdmin(admin.ModelAdmin):
  13. inlines = (EmployeeInline, )
  14. # list_display = ('username','department',)
  15. # def department(self,obj):
  16. # return '%s'%obj.employee.department
  17. # def get_queryset(self, request):
  18. # return User.objects.filter(employee__department=request.user.employee.department).order_by('id')
  19. fieldsets = (
  20. (None, {'fields': ('username', 'password')}),
  21. (_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser',
  22. 'groups', 'password')}),
  23. (_('Important dates'), {'fields': ('last_login', 'date_joined')}),
  24. )
  25. admin.site.unregister(User)
  26. admin.site.register(User, MyModelAdmin)



  1. # -*- coding: utf-8 -*-
  2. from django.db import models
  3. from django.contrib.auth.models import User
  4. class Employee(models.Model):
  5. user = models.OneToOneField(User,on_delete=models.CASCADE)
  6. department = models.CharField(max_length=100)


  1. # -*- coding: utf-8 -*-
  2. from django.db import models
  3. from django.contrib.auth.models import User
  4. class Department(models.Model):
  5. department = models.CharField(max_length=100)
  6. class Employee(models.Model):
  7. user = models.OneToOneField(User,on_delete=models.CASCADE)
  8. department = models.ForeignKey(Department,on_delete=models.CASCADE)


save_model(request, obj, form, change)

此方法为admin界面用户保存model实例时的行为。request为HttpRequest实例,obj为model实例,form为ModelForm实例,change为bool值,取决于model实例是新增的还是修改的。

重写此方法可以做一些pre-save或者post-save行为。

比如,可以把request.user保存为model实例的属性:

from django.contrib import adminclass ArticleAdmin(admin.ModelAdmin):    def save_model(self, request, obj, form, change):        obj.user = request.user        obj.save()



















user_admin的更多相关文章

  1. Django--自定义用户认证

    Django自带的用户认证 以前都是用Django自带的用户认证,用户名字段一对一关系对应Django--User表(其实它也是继承了abstractbaseuser). 1 2 3 from dja ...

  2. 关系数据库常用SQL语句语法大全

    创建表 语法 CREATE TABLE <表名>(<列名> <数据类型>[列级完整性约束条件] [,<列名> <数据类型>[列级完整性约束条 ...

  3. Python之路【第二十二篇】CMDB项目

    浅谈ITIL TIL即IT基础架构库(Information Technology Infrastructure Library, ITIL,信息技术基础架构库)由英国政府部门CCTA(Central ...

  4. SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)【转载】

    最近在学习Spring+SpringMVC+MyBatis的整合.以下是参考网上的资料自己实践操作的详细步骤. 1.基本概念   1.1.Spring Spring是一个开源框架,Spring是于20 ...

  5. [转]MySQL中存储过程权限问题

    MySQL中以用户执行存储过程的权限为EXECUTE 比如我们在名为configdb的数据库下创建了如下存储过程,存储过程的定义者为user_admin use configdb; drop proc ...

  6. Hibernate 对象的三种状态

    hibernate对象的三种状态: (一) 瞬时(临时)状态:   对象被创建时的状态,数据库里面没有与之对应的记录! (二) 持久状态:   处于session的管理中,并且数据库里面存在与之对应的 ...

  7. 初始Hibernate框架技术

    hibernate: 定义:ORM:Object Relational Mapping 对象 关系 映射 使用hibernate时几个必要的: 1.实体类 2.映射文件(类  -数据库表,属性-字段) ...

  8. RabbitMQ用户角色及权限控制

    RabbitMQ的用户角色分类:none.management.policymaker.monitoring.administrator RabbitMQ各类角色描述:none不能访问 managem ...

  9. TestNG中同一个类中执行多个test()方法如何配置testng.xml

    public class IndexInfo extends BaseTesting{ private IndexPage IndexPage1;// private AddEquipmentInfo ...

随机推荐

  1. Gradle build.gradle to Maven pom.xml ,终于找到你了。

    尊重原创:https://blog.csdn.net/kevin_luan/article/details/50996109 根据build.gradle 生成maven pox.xml 1.将以下配 ...

  2. ubuntu16安装docker

    首先确保curl已经安装! 然后执行: curl -sSL https://get.docker.com/|sudo sh 这个是通过脚本的方式安装docker. 运行命令测试 sudo docker ...

  3. cmpp 短信平台

    背景: 物联网一般是在设备上安装sim卡,通过2g网络来进行设备与云端系统的交互,网络都是通过移动的基站来进行网络传输的,所以一旦移动的基站有变动,比如流量降级,光缆割接,其他故障登 都会导致2g络的 ...

  4. cp实现无提示覆盖拷贝

    在我们使用cp批量拷贝时,即使使用cp -rf ,遇到需要覆盖时,也是需要确认是否覆盖的. 解决办法1: 我们使用alias看一下别名设置会发现这样一行 alias cp='cp -i' 意思就是使用 ...

  5. Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed

    错误原因:常量.随机或者依赖时区的表达式不能作为分区函数. 解决方法:把ts列换成datetime类型,创建成功. CREATE TABLE T_log( id INT(11) NOT NULL AU ...

  6. iOS大文件分片上传和断点续传

    总结一下大文件分片上传和断点续传的问题.因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况.http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件 ...

  7. 第一百八十五节,jQuery,Ajax 表单插件

    jQuery,Ajax 表单插件 学习要点: 1.核心方法 2.option 参数 3.工具方法 传统的表单提交,需要多次跳转页面,极大的消耗资源也缺乏良好的用户体验.而这款 form.js 表单的 ...

  8. jQuery 数据操作函数

    函数 描述 .clearQueue() 从队列中删除所有未运行的项目. .data() 存储与匹配元素相关的任意数据. jQuery.data() 存储与指定元素相关的任意数据. .dequeue() ...

  9. Pig系统分析(8)-Pig可扩展性

    本文是Pig系统分析系列中的最后一篇了,主要讨论怎样扩展Pig功能.不仅介绍Pig本身提供的UDFs扩展机制,还从架构上探讨Pig扩展可能性. 补充说明:前些天同事发现twitter推动的Pig On ...

  10. sourcenav安装

    $ ./configure之后会出现 configure: error: ./configure failed for unixconfigure: error: ./configure failed ...