为了账号安全,请及时绑定邮箱和手机立即绑定

从 django ORM 检索查询

从 django ORM 检索查询

牧羊人nacy 2022-06-14 16:34:20
我在我的 django 应用程序中创建了一个公司,两个或多个人可以使用同一家公司登录。我想向公司的另一位用户展示公司一位用户的数据。简化:如果一个公司的 user1 创建了一个对象,那么它应该对该公司的所有用户可见Models.pyclass User(AbstractUser):    is_employee = models.BooleanField(default=False)    is_client = models.BooleanField(default=False)class Company(models.Model):    company_name = models.CharField(max_length=255, default=0)    company_email = models.EmailField(max_length=255, default=0)    company_phone = models.CharField(max_length=255, default=0)    def __str__ (self):        return self.company_nameclass Employee(models.Model):    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)    company = models.ForeignKey(Company, on_delete=models.CASCADE, related_name='comapany_owner')    def __str__ (self):        return self.user.usernameclass Product(models.Model):    product_name = models.CharField(max_length=255, default=0)    product_priceperunit = models.IntegerField(default=0)    product_owner = models.ForeignKey(Employee, on_delete=models.CASCADE, related_name='product_owner')Views.py@method_decorator([login_required, employee_required], name='dispatch')class ProductsTableView(ListView):    model = Product    context_object_name = 'product'    template_name = 'packsapp/employee/employeeProductsTable.html'    def get_queryset (self):        queryset = Product.objects.filter(product_owner=self.request.user.employee)        return queryset在这里,我按员工提取数据。如何修改查询以提供同一公司所有员工的数据?
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

如果这意味着该员工与product_owner该Product员工的公司属于同一家公司,我们可以过滤:


@method_decorator([login_required, employee_required], name='dispatch')

class ProductsTableView(ListView):


    # ...


    def get_queryset (self):

        return Product.objects.filter(

            product_owner__company=self.request.user.employee.company

        )


查看完整回答
反对 回复 2022-06-14
  • 1 回答
  • 0 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信