Django 实现Admin自动填充当前用户的示例代码


Posted in Python onNovember 18, 2019

model.py

import datetime

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


class Entry(models.Model):
  title = models.CharField(max_length=250)
  slug = models.SlugField()
  pub_date = models.DateTimeField(default=datetime.datetime.now)
  author = models.ForeignKey(User, related_name='entries')
  summary = models.TextField(blank=True)
  body = models.TextField()

  class Meta:
    get_latest_by = 'pub_date'
    ordering = ('-pub_date',)
    verbose_name_plural = 'entries'

  def __unicode__(self):
    return self.title

  def get_absolute_url(self):
    return "/weblog/%s/%s/" % (self.pub_date.strftime("%Y/%b/%d"),
                  self.slug)

admin.py

from django.contrib import admin

from blog.models import Entry


class EntryAdmin(admin.ModelAdmin):
  exclude = ('author',)
  list_display = ('title', 'pub_date', 'author')
  prepopulated_fields = { 'slug': ['title'] }

  def has_change_permission(self, request, obj=None):
    has_class_permission = super(EntryAdmin, self).has_change_permission(request, obj)
    if not has_class_permission:
      return False
    if obj is not None and not request.user.is_superuser and request.user.id != obj.author.id:
      return False
    return True

  def queryset(self, request):
    if request.user.is_superuser:
      return Entry.objects.all()
    return Entry.objects.filter(author=request.user)

  def save_model(self, request, obj, form, change):
    if not change:
      obj.author = request.user
    obj.save()

admin.site.register(Entry, EntryAdmin)

参考链接:https://www.b-list.org/weblog/2008/dec/24/admin/

以上这篇Django 实现Admin自动填充当前用户的示例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
学习python的几条建议分享
Feb 10 Python
python使用urlparse分析网址中域名的方法
Apr 15 Python
python2.7 json 转换日期的处理的示例
Mar 07 Python
使用pandas实现csv/excel sheet互相转换的方法
Dec 10 Python
python3.6+django2.0+mysql搭建网站过程详解
Jul 24 Python
给Python学习者的文件读写指南(含基础与进阶)
Jan 29 Python
python字典和json.dumps()的遇到的坑分析
Mar 11 Python
Python Tornado之跨域请求与Options请求方式
Mar 28 Python
django项目中新增app的2种实现方法
Apr 01 Python
Python轻量级web框架bottle使用方法解析
Jun 13 Python
详解pandas.DataFrame.plot() 画图函数
Jun 14 Python
python多线程semaphore实现线程数控制的示例
Aug 10 Python
Django 创建后台,配置sqlite3教程
Nov 18 #Python
Python3实现配置文件差异对比脚本
Nov 18 #Python
Python(PyS60)实现简单语音整点报时
Nov 18 #Python
wxPython实现整点报时
Nov 18 #Python
python字符串的拼接方法总结
Nov 18 #Python
python将字符串转变成dict格式的实现
Nov 18 #Python
在Python中使用filter去除列表中值为假及空字符串的例子
Nov 18 #Python
You might like
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
PHP如何读取由JavaScript设置的Cookie
2017/03/22 PHP
PHP 布尔值的自增与自减的实现方法
2018/05/03 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
2019/03/22 PHP
地震发生中逃生十大法则
2008/05/12 Javascript
javascript自启动函数的问题探讨
2013/10/05 Javascript
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
jQuery学习笔记之jQuery原型属性和方法
2014/06/09 Javascript
jQuery插件开发的五种形态小结
2015/03/04 Javascript
jQuery实现图像旋转动画效果
2016/05/29 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
2017/03/02 Javascript
基于bootstrap实现收缩导航条
2017/03/17 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
Vue.js进行查询操作的实例详解
2017/08/25 Javascript
JavaScript 自定义事件之我见
2017/09/25 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
[46:47]完美世界DOTA2联赛PWL S2 FTD vs Magma 第二场 11.20
2020/11/23 DOTA
Python下Fabric的简单部署方法
2015/07/14 Python
Python实现配置文件备份的方法
2015/07/30 Python
Python 从相对路径下import的方法
2018/12/04 Python
Python3对称加密算法AES、DES3实例详解
2018/12/06 Python
浅谈python标准库--functools.partial
2019/03/13 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
Python 中如何写注释
2020/08/28 Python
临床医师专业个人自我评价范文
2013/11/07 职场文书
新教师岗前培训方案
2014/06/05 职场文书
七夕活动策划方案
2014/08/16 职场文书
工地食品安全责任书
2015/05/09 职场文书
中学教师教学工作总结
2015/08/13 职场文书