博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django admin 常用方法 model 增加只读权限
阅读量:7038 次
发布时间:2019-06-28

本文共 3787 字,大约阅读时间需要 12 分钟。

1.Django admin model 设置查看权限

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

#modelclass 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]

 

转载地址:http://ednal.baihongyu.com/

你可能感兴趣的文章
Ubuntu Server VS Ubuntu Desktop区别
查看>>
Spring Boot MyBatis升级篇-注解-动态SQL(if test)-方案二:@Provider(8)
查看>>
windows10 Sqlserver卸载 指定账户不存在
查看>>
【JavaScript】快速入门
查看>>
【JavaScript】函数
查看>>
POJ 1753 Flip Game (递归枚举)
查看>>
关于ubuntu
查看>>
HTTP2.0
查看>>
Lintcode: Subarray Sum 解题报告
查看>>
C#防止WebBrowser在新窗口中打开链接页面
查看>>
php.ini修改php上传文件大小限制(转)
查看>>
office2003 下载地址 及密码
查看>>
/etc/vim/vimrc的一个的配置
查看>>
浏览器中关于事件的那点事儿(转)
查看>>
c#Lamdba表达式与托付
查看>>
VC皮肤库SkinSharp 1.0.6.6的使用
查看>>
php上传图片到server
查看>>
如何对 GIT 分支进行规划?
查看>>
说说非托管资源的回收
查看>>
虚拟机安装麒麟3.2时报unkown filesystem,you need to load the linux kernel first
查看>>