ModelViewset在django

0

的问题

我的新手的决其余的框架。 我用Modelviewset创建API for项目。 我希望获得名单的事情不是由id和我使用lookup_field做到这一点。 但它仅仅是回1的对象。 我怎么能定义它返回multible对象?

这是我的型

class Rating(models.Model):
    dayandtime = models.DateTimeField(auto_now_add=True)
    ratingpoint = models.IntegerField(null=True,blank=True)
    ratingcomment = models.TextField(null=True, blank=True)
    img = models.ImageField(upload_to='static',default=None)
    product = models.ForeignKey(Product,on_delete=models.CASCADE)
    user = models.ForeignKey(User,on_delete=models.CASCADE)

这是我的看法

class RatingViewSet(viewsets.ModelViewSet):
    queryset = Rating.objects.all()
    serializer_class = RatingSerializer
    lookup_field = "product"

这是我的程序

class RatingSerializer(ModelSerializer):
    class Meta:
        model=Rating
        fields=["id","dayandtime","ratingpoint", "ratingcomment","img","product","user"]
        lookup_field = "product" 

请帮我sovle这个问题。 非常感谢你

1

最好的答案

1

你想使用过滤器在api和返回多个对象。 但 lookup_field用来为执行对象查找的个体模型实例. 有许多方式来实现自己的目标,但我会告诉你 过滤器的查询参数.

你可以重写 get_queryset() 处理诸如网址 http://yourdoamin.com/api/ratings?product=1 (在这里我们假设你要过滤产品id)。

class RatingViewSet(viewsets.ModelViewSet):
    serializer_class = RatingSerializer

    def get_queryset(self):
        queryset = Rating.objects.all()
        product= self.request.query_params.get('product')
        if product not None:
            queryset = queryset.filter(product_id=product)
        return queryset

当然,你可以加入许多 if/elif/else 块来处理许多的查询参数。

你也可以使用一个类似的方法: 该SearchFilter类 实现同样的目标。

更多信息的 发展成果框架文件过滤

2021-11-24 10:00:31

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................