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中字符串的常见操作技巧总结
Jul 28 Python
解决Python 遍历字典时删除元素报异常的问题
Sep 11 Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 Python
python3读取MySQL-Front的MYSQL密码
May 03 Python
谈一谈基于python的面向对象编程基础
May 21 Python
python pip源配置,pip配置文件存放位置的方法
Jul 12 Python
Python数据可视化:幂律分布实例详解
Dec 07 Python
pycharm激活码有效到2020年11月底
Sep 18 Python
python实现IOU计算案例
Apr 12 Python
Python中zip函数如何使用
Jun 04 Python
Python实现爬取并分析电商评论
Jun 19 Python
Python实现制作销售数据可视化看板详解
Nov 27 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实现信用卡校验位算法THE LUHN MOD-10示例
2014/05/07 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
Firefox outerHTML实现代码
2009/06/04 Javascript
Javascript 学习笔记 错误处理
2009/07/30 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
JavaScript与HTML的结合方法详解
2015/11/23 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
2018/08/09 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
微信小程序自定义带价格显示日历效果
2018/12/29 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
JavaScript用document.write()输出换行的示例代码
2020/11/26 Javascript
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
Python实现获取命令行输出结果的方法
2017/06/10 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
Python开发之pip安装及使用方法详解
2020/02/21 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
详解pycharm2020.1.1专业版安装指南(推荐)
2020/08/07 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
金鑫耀Java笔试题
2014/09/06 面试题
上级检查欢迎词
2014/01/18 职场文书
2014年关于两会精神的心得体会
2014/03/17 职场文书
大学理论知识学习自我鉴定
2014/04/28 职场文书
会计系毕业生求职信
2014/05/28 职场文书
政风行风评议整改方案
2014/09/15 职场文书
公司搬迁通知
2015/04/20 职场文书
产品调价通知函
2015/04/20 职场文书
MySQL注入基础练习
2021/05/30 MySQL
Python 绘制多因子柱状图
2022/05/11 Python
python数字图像处理:图像简单滤波
2022/06/28 Python