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库urllib与urllib2主要区别分析
Jul 13 Python
Python中用Spark模块的使用教程
Apr 13 Python
Python中计算三角函数之cos()方法的使用简介
May 15 Python
Python的包管理器pip更换软件源的方法详解
Jun 20 Python
Python入门_条件控制(详解)
May 16 Python
详解Python绘图Turtle库
Oct 12 Python
pytorch 计算ConvTranspose1d输出特征大小方式
Jun 23 Python
用python给csv里的数据排序的具体代码
Jul 17 Python
python使用列表的最佳方案
Aug 12 Python
Python 创建守护进程的示例
Sep 29 Python
python实现在列表中查找某个元素的下标示例
Nov 16 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
Jun 05 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读取纯真ip数据库使用示例
2014/01/26 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
新手入门常用代码集锦
2007/01/11 Javascript
javascript的数据类型、字面量、变量介绍
2012/05/23 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
javascript制作坦克大战全纪录(2)
2014/11/27 Javascript
Javascript变量的作用域和作用域链详解
2015/04/02 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
JavaScript的面向对象编程基础
2015/08/13 Javascript
JS JSOP跨域请求实例详解
2016/07/04 Javascript
AngularJS表单详解及示例代码
2016/08/17 Javascript
jQuery代码实现实时获取时间
2017/01/29 Javascript
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
详解Vue快速零配置的打包工具——parcel
2018/01/16 Javascript
vue实现底部菜单功能
2018/07/24 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
2019/11/09 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
合并百度影音的离线数据( with python 2.3)
2015/08/04 Python
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
2018/04/19 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
别名指示符是什么
2012/10/08 面试题
Java基础面试题
2012/11/02 面试题
SOA的常见陷阱或者误解是什么
2014/10/05 面试题
工程现场管理求职自荐信
2013/10/02 职场文书
项目经理岗位职责
2013/11/11 职场文书
售后客服个人自我评价
2014/09/14 职场文书
2014教师“四风问题”对照检查材料思想汇报
2014/09/16 职场文书
学生未请假就回家检讨书
2014/09/22 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
《女娲补天》教学反思
2016/02/20 职场文书
【海涛解说】pis亲自推荐,其实你从来不会玩NW
2022/04/01 DOTA