Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有过滤器的Django rest框架API_Django_Filter_Django Rest Framework - Fatal编程技术网

带有过滤器的Django rest框架API

带有过滤器的Django rest框架API,django,filter,django-rest-framework,Django,Filter,Django Rest Framework,型号.py path('products-list/', views.WarehouseList.as_view()), class WarehouseList(generics.ListCreateAPIView): queryset = Warehouse.objects.all() serializer_class = WarehouseSerializer # SERIALIZER OF CATEGORY PRODUCTS class Category_prod

型号.py

   path('products-list/', views.WarehouseList.as_view()),
class WarehouseList(generics.ListCreateAPIView):
    queryset = Warehouse.objects.all()
    serializer_class = WarehouseSerializer
# SERIALIZER OF CATEGORY PRODUCTS
class Category_productSerializer(serializers.ModelSerializer):
    class Meta:
        model = Category_product
        fields = ['id', 'category_name']


# SERIALIZER OF WAREHOUSE
class WarehouseSerializer(serializers.ModelSerializer):
category_name = serializers.ReadOnlyField(
    source='category_product.category_name')

def get_serializer(self, *args, **kwargs):
    if isinstance(kwargs.get('data', {}), list):
        kwargs['many'] = True
    return super(Category_productSerializer, self).get_serializer(*args, **kwargs)

class Meta:
    model = Warehouse
    fields = ['id', 'category_product', 'category_name', 'condition',
              'product_name', 'amount', 'barcode', 'f_price', 'created_at', 'updated_at']
类别:

class Category_product(models.Model):
    category_name = models.CharField(max_length=200, unique=True)

    def __str__(self):
        return self.category_name  
产品:

class Warehouse(models.Model):
    category_product = models.ForeignKey(
    Category_product, on_delete=models.CASCADE)
    product_name = models.CharField(max_length=200, unique=True)
    condition = models.BooleanField(default=False)
    amount = models.IntegerField()
    barcode = models.BigIntegerField()
    f_price = models.CharField(max_length=255, null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.product_name
url.py

   path('products-list/', views.WarehouseList.as_view()),
class WarehouseList(generics.ListCreateAPIView):
    queryset = Warehouse.objects.all()
    serializer_class = WarehouseSerializer
# SERIALIZER OF CATEGORY PRODUCTS
class Category_productSerializer(serializers.ModelSerializer):
    class Meta:
        model = Category_product
        fields = ['id', 'category_name']


# SERIALIZER OF WAREHOUSE
class WarehouseSerializer(serializers.ModelSerializer):
category_name = serializers.ReadOnlyField(
    source='category_product.category_name')

def get_serializer(self, *args, **kwargs):
    if isinstance(kwargs.get('data', {}), list):
        kwargs['many'] = True
    return super(Category_productSerializer, self).get_serializer(*args, **kwargs)

class Meta:
    model = Warehouse
    fields = ['id', 'category_product', 'category_name', 'condition',
              'product_name', 'amount', 'barcode', 'f_price', 'created_at', 'updated_at']
视图.py

   path('products-list/', views.WarehouseList.as_view()),
class WarehouseList(generics.ListCreateAPIView):
    queryset = Warehouse.objects.all()
    serializer_class = WarehouseSerializer
# SERIALIZER OF CATEGORY PRODUCTS
class Category_productSerializer(serializers.ModelSerializer):
    class Meta:
        model = Category_product
        fields = ['id', 'category_name']


# SERIALIZER OF WAREHOUSE
class WarehouseSerializer(serializers.ModelSerializer):
category_name = serializers.ReadOnlyField(
    source='category_product.category_name')

def get_serializer(self, *args, **kwargs):
    if isinstance(kwargs.get('data', {}), list):
        kwargs['many'] = True
    return super(Category_productSerializer, self).get_serializer(*args, **kwargs)

class Meta:
    model = Warehouse
    fields = ['id', 'category_product', 'category_name', 'condition',
              'product_name', 'amount', 'barcode', 'f_price', 'created_at', 'updated_at']
序列化程序.py

   path('products-list/', views.WarehouseList.as_view()),
class WarehouseList(generics.ListCreateAPIView):
    queryset = Warehouse.objects.all()
    serializer_class = WarehouseSerializer
# SERIALIZER OF CATEGORY PRODUCTS
class Category_productSerializer(serializers.ModelSerializer):
    class Meta:
        model = Category_product
        fields = ['id', 'category_name']


# SERIALIZER OF WAREHOUSE
class WarehouseSerializer(serializers.ModelSerializer):
category_name = serializers.ReadOnlyField(
    source='category_product.category_name')

def get_serializer(self, *args, **kwargs):
    if isinstance(kwargs.get('data', {}), list):
        kwargs['many'] = True
    return super(Category_productSerializer, self).get_serializer(*args, **kwargs)

class Meta:
    model = Warehouse
    fields = ['id', 'category_product', 'category_name', 'condition',
              'product_name', 'amount', 'barcode', 'f_price', 'created_at', 'updated_at']
我想按确切的类别购买产品

{
"id": 1 
"category_name": "Electronics"
}
例如: 我有产品类别

{
"id": 1 
"category_name": "Electronics"
}
如果我向
api/products list/?cat=1发送GET请求

我想获取具有此类别的产品

创建一个
get\u queryset
方法,如下所示

类仓库列表(generics.ListCreateAPIView):
queryset=WareHouse.objects.all()
serializer_class=仓库序列化程序
def get_queryset(自我):
cat=self.request.query_params.get('cat',None)
如果cat不是无:
self.queryset=self.queryset.filter(类别\产品\ id=cat)
返回self.queryset

现在它返回“WarehouseList”应该包含
queryset
属性,或者覆盖
get\u queryset()
方法_发布,在浏览之后。pyThank的,现在它可以工作了!当我成为一名优秀的开发人员时,我会记得你们:)我给你们的建议是好好学习python,这样你们就能够阅读django rest框架的代码。然后您可以自己解决所有与drf相关的问题。当然,这将是困难的,需要时间。但是没有别的办法。祝你好运!如果我想同时发布多个对象,我应该在哪里使用many=“True”?