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查询sqlite数据表的方法
May 08 Python
python网络编程之文件下载实例分析
May 20 Python
Python 列表排序方法reverse、sort、sorted详解
Jan 22 Python
python3实现全角和半角字符转换的方法示例
Sep 21 Python
python基础之包的导入和__init__.py的介绍
Jan 08 Python
Python星号*与**用法分析
Feb 02 Python
Python面向对象class类属性及子类用法分析
Feb 02 Python
Python3.6连接Oracle数据库的方法详解
May 18 Python
PyCharm配置mongo插件的方法
Nov 30 Python
django主动抛出403异常的方法详解
Jan 04 Python
在python中实现强制关闭线程的示例
Jan 22 Python
python常见的占位符总结及用法
Jul 02 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
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
php教程之魔术方法的使用示例(php魔术函数)
2014/02/12 PHP
Smarty变量调节器失效的解决办法
2014/08/20 PHP
php导入模块文件分享
2015/03/17 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
2020/06/02 PHP
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
jquery 3D球状导航的文章分类
2010/07/06 Javascript
人人网javascript面试题 可以提前实现下
2012/01/05 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
简述AngularJS相关的一些编程思想
2015/06/23 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
2017/01/22 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
AngularJS使用ocLazyLoad实现js延迟加载
2017/07/05 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
vue2.0 解决抽取公用js的问题
2020/07/31 Javascript
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
python实现定时发送邮件
2020/12/23 Python
英国女士家居服网站:hush
2017/08/09 全球购物
Asics日本官网:鬼冢八喜郎创立的跑鞋运动品牌
2017/10/18 全球购物
俄罗斯香水和化妆品购物网站:Л’Этуаль
2018/05/10 全球购物
在阿尔卑斯山或希腊度过快乐假期:Alpine Elements
2019/12/28 全球购物
SQL里面IN比较快还是EXISTS比较快
2012/07/19 面试题
学院书画协会部门岗位职责
2013/12/01 职场文书
超市开店计划书
2014/04/26 职场文书
物流专业自荐信
2014/05/23 职场文书
大专生求职信
2014/06/29 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
2016年敬老月活动总结
2016/04/05 职场文书
详解盒子端CSS动画性能提升
2021/05/24 HTML / CSS
nginx作grpc的反向代理踩坑总结
2021/07/07 Servers
Python绘画好看的星空图
2022/03/17 Python