1、确保原来的表单有一个创建人或者负责人,避免不必要的问题
在models.py中,对应的类里增加两句:
from django.contrib.auth.models import User user = models.ForeignKey(User, on_delete=models.PROTECT, verbose_name='创建人新')
2、在adminx.py中增加以下代码,注意缩进,不然易出错,注意这里的kehuguanli要换成修改的类的类名:
#重写过滤方式 START 关联用户必须是user作为关键字 def get_list_queryset(self): qs = super(kehuguanli, self).get_list_queryset() # 如果是超级用户,显示所有数据 if self.request.user.is_superuser: return qs # 关键修改:使用用户名字符串进行过滤,而不是User对象 return qs.filter(user=self.request.user) def save_models(self): if not self.new_obj.pk: # 只有新建时才设置 # 关键修改:保存用户名而不是User对象 self.new_obj.user = self.request.user super(kehuguanli, self).save_models() #重写过滤方式 END 关联用户必须是user作为关键字
3、在需要修改的表里增加一个user_id字段
4、这样在超级管理员能看到所有的内容,而单独的用户只能看到他自己的内容,
超管那里筛选默认不能显示创建人,如果显示,就看不到所有的信息。
需要在数据库里修改一下对应的用户,这里要注意,如果创建人和负责人不是同一人,要注意!!!
5、需要加这句处理一下就可以了。
UPDATE app1_genjin_admin SET user_id = 3 WHERE user = '李香'
效果如下:
而当前用户只能看到他自己的信息:
以上就实现了多用户单独管理自己的内容。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。




评论(0)