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设置windows桌面壁纸的实现代码
Jan 28 Python
Python使用迭代器捕获Generator返回值的方法
Apr 05 Python
python绘制简单折线图代码示例
Dec 19 Python
pandas string转dataframe的方法
Apr 11 Python
python实战之实现excel读取、统计、写入的示例讲解
May 02 Python
超简单的Python HTTP服务
Jul 22 Python
python生成requirements.txt的两种方法
Sep 18 Python
numpy np.newaxis 的实用分享
Nov 30 Python
使用Python爬虫库requests发送表单数据和JSON数据
Jan 25 Python
如何使用Pytorch搭建模型
Oct 26 Python
如何在C++中调用Python
May 21 Python
python+opencv实现视频抽帧示例代码
Jun 11 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
apache+php完美解决301重定向的两种方法
2011/06/08 PHP
linux下为php添加curl扩展的方法
2011/07/29 PHP
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
2017/11/06 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
图片自动更新(说明)
2006/10/02 Javascript
javascript比较文档位置
2008/04/08 Javascript
JS加jquery简单实现标签元素的显示或隐藏
2013/09/23 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
Bootstrap每天必学之前端开发框架
2015/11/19 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
原生js实现无缝轮播图效果
2017/01/11 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
[02:17]DOTA2亚洲邀请赛 RAVE战队出场宣传片
2015/02/07 DOTA
儿童python练习实例
2018/05/27 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
基于python实现删除指定文件类型
2020/07/21 Python
伦敦著名的运动鞋综合商店:Footpatrol
2019/03/25 全球购物
澳大利亚礼品卡商店:Gift Card Store
2019/06/24 全球购物
蒂娜商店:Tiina the Store
2019/12/07 全球购物
住房公积金接收函
2014/01/09 职场文书
给领导的致歉信范文
2014/01/13 职场文书
大学生开西餐厅创业计划书
2014/02/01 职场文书
硕士生工作推荐信
2014/03/07 职场文书
经典安踏广告词
2014/03/21 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
软件研发工程师岗位职责
2014/09/30 职场文书
学生检讨书范文
2015/01/27 职场文书
运动会3000米加油稿
2015/07/21 职场文书
python之基数排序的实现
2021/07/26 Python
java获取一个文本文件的编码(格式)信息
2022/09/23 Java/Android