python - 从 Django ORM 检索查询

标签 python django

我在我的 django 应用程序中创建了一个公司,两个或更多人可以登录同一家公司。我想把公司一个用户的数据展示给公司的另一个用户。

为了简化:如果公司的 user1 创建了一个对象,那么它应该对该公司的所有用户可见

模型.py

class 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_name

class 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.username
class 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

这里我按员工提取数据。如何修改查询以提供同一公司所有员工的数据??

最佳答案

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

@method_decorator([login_required, employee_required], name='dispatch')
class ProductsTableView(ListView):

    # ...

    def get_queryset (self):
        return Product.objects.filter(
            <b>product_owner__company=self.request.user.employee.company</b>
        )

关于python - 从 Django ORM 检索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58231561/

相关文章:

Django 身份验证和加密 - 它是如何工作的?

python - 如何在 __init__ 中设置只读 @property

python - python中使用key对数据进行排序

python - 在 python 中搜索具有 [at]/(at) 模式的电子邮件地址

python - 为什么只有在管道传输 python 脚本的输出时才会出现 unicode 错误?

python - Django 检查表单输入字段是否不为空

python.clang AST解析: getting c++ template argument of field declaration

python - 使用 python 2.7 的 Django 中的类型错误

python -/users/sigup create_user() 处的 TypeError 需要 2 到 4 个位置参数,但给出了 5 个

python - 在模板中使用 django session