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计算三角函数之asin()方法的使用
May 15 Python
在Python中处理日期和时间的基本知识点整理汇总
May 22 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
Oct 13 Python
python爬虫面试宝典(常见问题)
Mar 02 Python
解决Tensorflow安装成功,但在导入时报错的问题
Jun 13 Python
Python中存取文件的4种不同操作
Jul 02 Python
Python2包含中文报错的解决方法
Jul 09 Python
python函数的万能参数传参详解
Jul 26 Python
Django 项目重命名的实现步骤解析
Aug 14 Python
Python3查找列表中重复元素的个数的3种方法详解
Feb 13 Python
解决python执行较大excel文件openpyxl慢问题
May 15 Python
详解查看Python解释器路径的两种方式
Oct 15 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
如何在PHP中使用Oracle数据库(5)
2006/10/09 PHP
网友原创的PHP模板类代码
2008/09/07 PHP
php简单实现MVC
2015/02/05 PHP
php保存任意网络图片到服务器的方法
2015/04/14 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
2017/05/20 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
JS重要知识点小结
2011/11/06 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
javascript 操作符(~、&、|、^、)使用案例
2014/12/31 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
2016/09/23 Javascript
javascript基础知识讲解
2017/01/11 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
详解基于 Node.js 的轻量级云函数功能实现
2019/07/08 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
python进阶教程之模块(module)介绍
2014/08/30 Python
Python动态加载模块的3种方法
2014/11/22 Python
用Python写王者荣耀刷金币脚本
2017/12/21 Python
浅析Python3爬虫登录模拟
2018/02/07 Python
python 实现批量xls文件转csv文件的方法
2018/10/23 Python
用Python实现校园通知更新提醒功能
2019/11/23 Python
python map比for循环快在哪
2020/09/21 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
2021/02/25 Python
详解使用HTML5 Canvas创建动态粒子网格动画
2016/12/14 HTML / CSS
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
Derek Rose官网:英国高档睡衣、家居服和内衣品牌
2020/01/18 全球购物
Java如何支持I18N?
2016/10/31 面试题
网络研修随笔感言
2014/02/17 职场文书
高级工程师英文求职信
2014/03/19 职场文书
经济信息系毕业生自荐信
2014/06/02 职场文书
李强为自己工作观后感
2015/06/11 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书