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 相关文章推荐
教你如何在Django 1.6中正确使用 Signal
Jun 22 Python
Python首次安装后运行报错(0xc000007b)的解决方法
Oct 18 Python
Python机器学习之K-Means聚类实现详解
Feb 22 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
Jun 10 Python
PyQt5下拉式复选框QComboCheckBox的实例
Jun 25 Python
python 计算数据偏差和峰度的方法
Jun 29 Python
python提取log文件内容并画出图表
Jul 08 Python
python的pstuil模块使用方法总结
Jul 26 Python
Win下PyInstaller 安装和使用教程
Dec 25 Python
pytorch下大型数据集(大型图片)的导入方式
Jan 08 Python
通过实例了解Python异常处理机制底层实现
Jul 23 Python
浅谈pytorch中stack和cat的及to_tensor的坑
May 20 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
动漫定律:眯眯眼都是怪物!这些角色狠话不多~
2020/03/03 日漫
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
php求两个目录的相对路径示例(php获取相对路径)
2014/03/27 PHP
深入理解PHP中的global
2014/08/19 PHP
jquery pagination插件实现无刷新分页代码
2009/10/13 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
JavaScript DOM进阶方法
2015/04/13 Javascript
jQuery插件制作之参数用法实例分析
2015/06/01 Javascript
javascript实现的猜数小游戏完整实例代码
2016/05/10 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
Angularjs 与 bower安装和使用详解
2017/05/11 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
Vue 组件传值几种常用方法【总结】
2018/05/28 Javascript
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
ES6函数实现排它两种写法解析
2020/05/13 Javascript
wxPython窗口中文乱码解决方法
2014/10/11 Python
在Lighttpd服务器中运行Django应用的方法
2015/07/22 Python
python为什么会环境变量设置不成功
2020/06/23 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
舒适的豪华鞋:Taryn Rose
2018/05/03 全球购物
加利福尼亚州威尼斯的女性奢侈品设计师服装和概念店:Mona Moore
2018/09/13 全球购物
阿联酋航空丹麦官方网站:Emirates DK
2019/08/25 全球购物
公司前台辞职报告
2014/01/19 职场文书
商学院大学生求职的自我评价
2014/03/12 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
2015年公司新年寄语
2014/12/08 职场文书
酒店宣传语大全
2015/07/13 职场文书
会计岗位工作总结
2015/08/12 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书
三年级作文之小小梦想
2019/12/06 职场文书
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
2021/05/29 MySQL
MySQL系列之十二 备份与恢复
2021/07/02 MySQL