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 = '李香'

效果如下:

而当前用户只能看到他自己的信息:

以上就实现了多用户单独管理自己的内容。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。