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守护进程(daemon)代码实例
Mar 06 Python
Python的Flask框架中@app.route的用法教程
Mar 31 Python
python itchat实现微信自动回复的示例代码
Aug 14 Python
python 匹配url中是否存在IP地址的方法
Jun 04 Python
Python嵌套列表转一维的方法(压平嵌套列表)
Jul 03 Python
Python爬虫实现简单的爬取有道翻译功能示例
Jul 13 Python
python实现狄克斯特拉算法
Jan 17 Python
Python 常用模块 re 使用方法详解
Jun 06 Python
浅析使用Python搭建http服务器
Oct 27 Python
Python字符串的修改方法实例
Dec 19 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
Jan 13 Python
Jupyter Notebook添加代码自动补全功能的实现
Jan 07 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下escape解码函数的实现方法
2010/08/08 PHP
微盾PHP脚本加密专家php解密算法
2020/09/13 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
JS冒泡事件与事件捕获实例详解
2016/11/25 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
Vue中实现权限控制的方法示例
2019/06/07 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
python文件和目录操作函数小结
2014/07/11 Python
python爬虫常用的模块分析
2014/08/29 Python
python服务器与android客户端socket通信实例
2014/11/12 Python
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
Python运算符重载用法实例分析
2015/06/01 Python
python中模块查找的原理与方法详解
2017/08/11 Python
Python实现修改IE注册表功能示例
2018/05/10 Python
对python周期性定时器的示例详解
2019/02/19 Python
使用python实现kNN分类算法
2019/10/16 Python
python 读取数据库并绘图的实例
2019/12/03 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
Python Matplotlib绘图基础知识代码解析
2020/08/31 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
HTML5里autofocus自动聚焦属性使用介绍
2016/06/22 HTML / CSS
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
英国领先的狗和宠物美容专家:Christies Direct
2017/04/03 全球购物
钳工实习自我鉴定
2013/09/19 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
管辖权异议上诉状
2015/05/23 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python