1.Django admin model 设置查看权限

Django model 默认只有增加、删除、修改权限。没有查看权限

#model
class Ad_Campaing(models.Model):
TEST_CHANNEL = (
('adx-1', '渠道1'),
('adx-2', '渠道2'),
('adx-3', '渠道3'),
('adx-4', '渠道4'),
('adx-5', '渠道5'),
('adx-no', '不测试') )
AD_CAMPAING_STATUS = (
('dsh', '待审核'),
('tfz', '投放中'),
('zt', '暂停'),
('ygq', '已过期'),
('yebz', '余额不足'),
('bgdb', '曝光达标'),
('djdb', '点击达标'),
('ready', '未到开始时间'),
('ysdb', '预算达标')
) name = models.CharField(max_length=200, verbose_name="广告组名称", default="")
status = models.CharField(max_length=20, verbose_name='广告组状态', default="dsh",
choices=AD_CAMPAING_STATUS)
advertiser = models.ForeignKey(UserProfile, verbose_name='广告主ID', null=True, blank=True)
start_time = models.DateTimeField(verbose_name='开始时间', null=True, blank=True)
end_time = models.DateTimeField(verbose_name='结束时间', null=True, blank=True)
#
budget = models.IntegerField(verbose_name='计划预算', null=False, blank=False, default=0)
# pay
max_impression = models.IntegerField(verbose_name='最大曝光数', null=True, blank=True)
max_click = models.IntegerField(verbose_name='最大点击数', null=True, blank=True)
pay_money = models.IntegerField(verbose_name='消费金额', null=True, blank=True)
# for free
free_max_impression = models.IntegerField(verbose_name='赠送曝光数', null=False, blank=False, default=0)
free_max_click = models.IntegerField(verbose_name='赠送点击数', null=False, blank=False, default=0) # 不要物理性删除数据, 如果要删除某条数据,就将enable置为0
enable = models.IntegerField(verbose_name='是否有效', null=False, blank=False, default=1)
unit_price = models.FloatField(verbose_name='单价', default=0.5)
weight = models.IntegerField(verbose_name='权重', default=50)
permit_min_vername = models.CharField(max_length=20, verbose_name="最小app版本号", default="4.6.7")
action = models.IntegerField(verbose_name='跳转类型', default=1)
permit_connect_type = models.CharField(max_length=20, verbose_name="允许跳转类型", default="[1, 2, 3, 4, 5]")
test_channel = models.CharField(max_length=20, verbose_name='测试渠道', default="adx-1",
choices=TEST_CHANNEL)
finish_percent = models.IntegerField(verbose_name='任务完成率', default=0)
add_time = models.DateTimeField(auto_now=True) class Meta:
verbose_name = "广告计划"
verbose_name_plural = verbose_name
permissions = (
('view_ad_campaing', 'view_ad_campaing'),
)

admin 文件

class Ad_CampaingAdmin(admin.ModelAdmin):
"""
广告计划
""" list_display = ['id', 'name', 'status', 'advertiser', 'weight', 'operate', 'unit_price', 'budget', 'start_time',
'end_time'] # 后台自定义显示 search_fields = ['id', 'name', 'status', 'advertiser'] # 定义后台搜索 #list_filter = ['id', 'name', 'status', 'advertiser'] # 通过时间搜索 #自定义表格显示字段
def operate(self, obj): sum_weight = Ad_Campaing.objects.filter(status='tfz').aggregate(Sum('weight'))
sum_weight = sum_weight.get('weight__sum')
print(sum_weight)
if obj.status == 'tfz':
try:
per_weight = round(float(obj.weight) / float(sum_weight) , 2)
except Exception as e:
per_weight = 0
else:
per_weight = 0
html = '{}'.format(per_weight)
return html operate.allow_tags = True
operate.short_description = '投放比例' def get_readonly_fields(self, request, obj=None):
"""
设置只读字段
:param request:
:param obj:
:return:
"""
# black5.view_ad_campaing black5 为app名字
if not request.user.is_superuser and request.user.has_perm('black5.view_ad_campaing'):
return [f.name for f in self.model._meta.fields]

Django admin 常用方法 model 增加只读权限的更多相关文章

  1. Django admin注册model究竟要怎么写才优雅 批量注册model

    比如在Django admin 注册models时,会用到. 对于APP里自带的models,可以使用这种方式注册. from django.contrib import admin # Regist ...

  2. Django admin注册model究竟要怎么写才优雅

    比如在Django admin 注册models时,会用到. 对于APP里自带的models,可以使用这种方式注册. from django.contrib import admin # Regist ...

  3. Django项目中model增加了新字段怎样更新?

    Django是不直接支持syncdb更新数据库的字段的,必须重新建立. 或者改一个表名新建一个表... 刚刚想出来一招: 自己在表上面先加一个字段,然后再在model上面改,貌似是可以的.

  4. Django admin 常用方法

    1.调整页面头部显示内容和页面标题 #admin.py admin.site.site_header = '广告业务系统' admin.site.site_title = '广告业务系统'

  5. 利用 Django admin 完成更多任务(转)

    利用 Django admin 完成更多任务   Django admin Django 为未来的开发人员提供了许多功能:一个成熟的标准库,一个活跃的用户社区,以及 Python 语言的所有好处.虽然 ...

  6. MongoDB之【增加用户认证、增加用户、删除用户、修改用户密码、读写权限、只读权限】

    说明:增加用户是针对数据库进行操作 1.进入到数据库 use dbname 2.针对当前数据库添加用户 权限是针对当前数据 1.添加并验证用户 > use admin > db.addUs ...

  7. MongoDB增加用户认证: 增加用户、删除用户、修改用户密码、读写权限、只读权限

    1.添加并验证用户 > use admin> db.addUser("zjx","tsjianxin") #添加用户 > db.auth(&q ...

  8. MongoDB增加用户、删除用户、修改用户读写权限及只读权限(注:转载于http://www.2cto.com/database/201203/125025.html)

    MongoDB  增加用户 删除用户  修改用户  读写权限 只读权限,   MongoDB用户权限分配的操作是针对某个库来说的.--这句话很重要.   1. 进入ljc 数据库:       use ...

  9. Django Admin中增加导出Excel功能

    参考: https://www.cnblogs.com/yoyo008/p/9232805.html 在使用Django Admin时, 对于列表我们有时需要提供数据导出功能, 如下图: 在Djang ...

随机推荐

  1. IOCP笔记

    IOCP是win32下的异步IO,利用线程池来异步处理IO请求. 这里要分析一下异步调用,跟同步调用不同,异步调用 调用了就马上返回,但是还留下个话:有事情了马上通知我,我会处理滴.恩恩,这很符合我的 ...

  2. nginx 安装SSL安全证书

    安装证书 文件说明: 1. 证书文件214051493730988.pem,包含两段内容,请不要删除任何一段内容. 2. 如果是证书系统创建的CSR,还包含:证书私钥文件214051493730988 ...

  3. 如何用cacti监控windwos

    1:模版下载地址 https://github.com/mrlesmithjr/cacti resource \ snmp_queries 的文件放到cacti服务器对应的目录下 导入模版文件(在te ...

  4. ANDROID开机动画分析

    开机动画文件:bootanimation.zip在system\media文件夹下动画是由系列图片连续刷屏实现的..bootanimation.zip文件是zip压缩文件,压缩方式要求是存储压缩,包含 ...

  5. PWA 入门: 写个非常简单的 PWA 页面

    Progressive Web Apps 是 Google 提出的用前沿的 Web 技术为网页提供 App 般使用体验的一系列方案. 这篇文章里我们来完成一个非常简单的 PWA 页面. 一个 PWA ...

  6. 代码管理(五)git 删除分支

    1.删除远程分支 在远程下面,选择需要删除的分支,右击,选择删除 2.  删除不存在远程对应分支的本地分支 在远程上建立了一个分支feature,后来leader觉得不合理,就把远程feature分支 ...

  7. RSA加密异常

    在利用RSA进行数据加密时,出现如下异常: Exception bytes at com.sun.crypto.provider.RSACipher.a(DashoA13*..) at com.sun ...

  8. ORA-01917: user or role 'PDB_DBA' does not exist

    在使用seed PDB创建新的PDB的时候,报了以下错误提示: SQL> create pluggable database pdb2 admin user admin1 identified ...

  9. 还没被玩坏的robobrowser(1)-简介

    今天偶然发现了一个很有意思的python库——robobrowser.简单的看了一下,觉得这个东东作为轻量的爬虫还是很适合的.另外这个做一些简单的web测试也未尝不可. 好了,那么问题来了. 什么是r ...

  10. PostgreSQL创建数据库用户

    注:版本不同,命令的执行路径可能有些不同. 一. 创建数据库用户freeswitch sudo -u postgres /usr/pgsql-9.5/bin/createuser -s -e free ...