我在我的 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
这里我按员工提取数据。如何修改查询以提供同一公司所有员工的数据??
最佳答案
如果这意味着该 Product
的 product_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/