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学习笔记_数据排序方法
May 22 Python
Tornado服务器中绑定域名、虚拟主机的方法
Aug 22 Python
Python中函数的多种格式和使用实例及小技巧
Apr 13 Python
Python的Flask框架中web表单的教程
Apr 20 Python
python删除列表内容
Aug 04 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
Jun 07 Python
pandas筛选某列出现编码错误的解决方法
Nov 07 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
解析Python的缩进规则的使用
Jan 16 Python
解决python-docx打包之后找不到default.docx的问题
Feb 13 Python
基于Python+QT的gui程序开发实现
Jul 03 Python
Python进程间的通信之语法学习
Apr 11 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 Ubb代码编辑器函数代码
2012/07/05 PHP
采用memcache在web集群中实现session的同步会话
2014/07/05 PHP
PHP树-不需要递归的实现方法
2016/06/21 PHP
学习js所必须要知道的一些
2007/03/07 Javascript
一个用js实现控制台控件的代码
2007/09/04 Javascript
比Jquery的document.ready更快的方法
2010/04/28 Javascript
基于jquery的关于动态创建DOM元素的问题
2010/12/24 Javascript
jQuery操作checkbox选择(list/table)
2013/04/07 Javascript
JavaScript不刷新实现浏览器的前进后退功能
2014/11/05 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
使用Vue中 v-for循环列表控制按钮隐藏显示功能
2019/04/23 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
python+mysql实现简单的web程序
2014/09/11 Python
举例详解Python中循环语句的嵌套使用
2015/05/14 Python
Python的标准模块包json详解
2017/03/13 Python
详解Python在七牛云平台的应用(一)
2017/12/05 Python
Python实现ping指定IP的示例
2018/06/04 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
关于Python中定制类的比较运算实例
2019/12/19 Python
Pycharm最常用的快捷键及使用技巧
2020/03/05 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
Backcountry旗下的户外商品闪购网站:steep&cheap
2016/09/22 全球购物
Mytheresa中国官网:德国时尚奢侈品商城
2017/08/04 全球购物
澳大利亚最大的在线美发和美容零售商之一:My Hair Care & Beauty
2019/08/24 全球购物
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
全国道德模范事迹
2014/02/01 职场文书
创建卫生先进单位实施方案
2014/03/10 职场文书
机房搬迁方案
2014/05/01 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
2014年自愿离婚协议书
2014/10/10 职场文书
调任通知
2015/04/21 职场文书
对Golang中的FORM相关字段理解
2021/05/02 Golang
mysql 体系结构和存储引擎介绍
2022/05/06 MySQL