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 Tkinter简单布局实例教程
Sep 03 Python
在Python中使用PIL模块处理图像的教程
Apr 29 Python
Python学习pygal绘制线图代码分享
Dec 09 Python
python处理csv中的空值方法
Jun 22 Python
Python-ElasticSearch搜索查询的讲解
Feb 25 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
Aug 06 Python
Python之数据序列化(json、pickle、shelve)详解
Aug 30 Python
Python Sympy计算梯度、散度和旋度的实例
Dec 06 Python
Python pip install之SSL异常处理操作
Sep 03 Python
python 读取、写入txt文件的示例
Sep 27 Python
如何创建一个Flask项目并进行简单配置
Nov 18 Python
用python批量解压带密码的压缩包
May 31 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源代码
2006/10/09 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
php事务处理实例详解
2014/07/11 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
9个比较实用的php代码片段
2016/03/15 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
2020/03/18 PHP
jQuery的一些注意
2006/12/06 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
jQuery实现表头固定效果的实例代码
2013/05/24 Javascript
javascript实现的DES加密示例
2013/10/30 Javascript
js数组去重的常用方法总结
2014/01/24 Javascript
JS字符串拼接在ie中都报错的解决方法
2014/03/27 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
AngularJS ng-template寄宿方式用法分析
2016/11/07 Javascript
vue项目中导入swiper插件的方法
2018/01/30 Javascript
[52:20]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
python自动化工具日志查询分析脚本代码实现
2013/11/26 Python
Python模拟登录的多种方法(四种)
2018/06/01 Python
解决Python pandas df 写入excel 出现的问题
2018/07/04 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
2019/07/07 Python
python3实现用turtle模块画一棵随机樱花树
2019/11/21 Python
django项目中使用云片网发送短信验证码的实现
2021/01/19 Python
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
南京软件公司的.net程序员笔试题
2014/08/31 面试题
中文专业毕业生自荐书范文
2014/01/04 职场文书
销售竞赛活动方案
2014/08/23 职场文书
《我爱祖国》演讲稿1000字
2014/09/26 职场文书
文明家庭事迹材料
2014/12/20 职场文书
大学生就业指导课心得体会
2016/01/15 职场文书