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简单获取本机计算机名和IP地址的方法
Jun 03 Python
Python入门教程之运算符与控制流
Aug 17 Python
Python实现的摇骰子猜大小功能小游戏示例
Dec 18 Python
Python中一行和多行import模块问题
Apr 01 Python
Python实现的计算器功能示例
Apr 26 Python
kaggle+mnist实现手写字体识别
Jul 26 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 Python
python爬虫添加请求头代码实例
Dec 28 Python
深入浅析Python代码规范性检测
Jul 31 Python
python使用openpyxl库读写Excel表格的方法(增删改查操作)
May 02 Python
python3 hdf5文件 遍历代码
May 19 Python
python和Appium的移动端多设备自动化测试框架
Apr 26 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
10条PHP高级技巧[修正版]
2011/08/02 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
PHP简单获取随机数的常用方法小结
2017/06/07 PHP
showModelessDialog()使用详解
2006/09/21 Javascript
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
Jquery 一次处理多个ajax请求的代码
2011/09/02 Javascript
JS 数字转换研究总结
2013/12/26 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
JavaScript中校验银行卡号的实现代码
2016/12/19 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
详解vue组件开发脚手架
2018/06/15 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
2018/09/29 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
Vue看了就会的8个小技巧
2021/01/21 Vue.js
[02:58]献给西雅图的情书_高清
2014/05/29 DOTA
[01:24:09]Ti4 冒泡赛第二轮DK vs C9 1
2014/07/14 DOTA
Python切换pip安装源的方法详解
2016/11/18 Python
python+django+sql学生信息管理后台开发
2018/01/11 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
python通过http下载文件的方法详解
2019/07/26 Python
微信小程序python用户认证的实现
2019/07/29 Python
Python3通过chmod修改目录或文件权限的方法示例
2020/06/08 Python
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
澳大利亚香水在线:Price Rite Mart
2017/12/28 全球购物
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
法律进社区实施方案
2014/03/21 职场文书
经销商订货会主持词
2014/03/27 职场文书
初中优秀教师事迹材料
2014/08/18 职场文书
未受刑事制裁公证证明
2014/09/20 职场文书
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
实习证明格式范文
2015/06/16 职场文书