在Django管理中只显示与当前用户的公司对应的数据,可以通过以下步骤实现:
from django.db import models
from django.contrib.auth.models import User
class Company(models.Model):
name = models.CharField(max_length=100)
# 其他字段...
class YourModel(models.Model):
company = models.ForeignKey(Company, on_delete=models.CASCADE)
# 其他字段...
from django.contrib import admin
class YourModelAdmin(admin.ModelAdmin):
def get_queryset(self, request):
qs = super().get_queryset(request)
if request.user.is_superuser:
return qs # 超级用户可以查看所有数据
return qs.filter(company=request.user.company)
admin.site.register(YourModel, YourModelAdmin)
在上述代码中,get_queryset()方法首先调用父类的方法获取原始查询集。然后,它检查当前用户是否为超级用户,如果是,则返回原始查询集。否则,它使用filter()方法过滤查询集,只返回与当前用户的公司相关联的数据。
from django.contrib import admin
from .models import YourModel
admin.site.register(YourModel, YourModelAdmin)
现在,在Django管理中,只有与当前用户的公司相关联的数据将被显示。超级用户可以查看所有数据。
这种方法可以确保只显示与当前用户的公司对应的数据,并提高数据的安全性和隐私保护。
领取专属 10元无门槛券
手把手带您无忧上云