DRF如何通过外键公司过滤用户和产品?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DRF如何通过外键公司过滤用户和产品?相关的知识,希望对你有一定的参考价值。

如何通过外键(公司)来过滤,只获取得到相同公司和授权用户的产品? 想法是用户只查看自己所在公司的信息。

模型。

class User(AbstractBaseUser):
     first_name = models.CharField(max_length=254)
     company = models.ForeignKey(Company,  on_delete=models.CASCADE,
                                blank=True, null=True)
class Product(models.Model):
    name = models.CharField(max_length=255) 
    company = models.ForeignKey(Company, on_delete=models.CASCADE,
                                blank=True, null=True)

串行器

class ProductSerializers(serializers.ModelSerializer):

    class Meta:
        model = Product
        fields = '__all__'

观点

class ProductViewSet(ModelViewSet):
    serializer_class = ProductSerializers
    queryset = Product.objects.all()
    permission_classes = [IsAuthenticated]
答案

如果我理解正确的话,你想根据当前用户的公司来过滤产品?

类似于:

products = Product.objects.filter(company=user.company)

以上是关于DRF如何通过外键公司过滤用户和产品?的主要内容,如果未能解决你的问题,请参考以下文章

DRF:使用嵌套序列化程序的简单外键分配?

外键过滤的精妙方法

第六章:需求评审如何进行

DRF4级联与外键字段

基于DRF的企业级流程管理系统

是否过滤 Django Rest Framework (DRF) 中的代码示例优化问题