ModelViewset 에 django

0

질문

나는 초보자 장고의 나머지-framework. 내가 사용하는 Modelviewset 을 만들기 위한 API 프로젝트입니다. 를 얻고 싶은 목록의 id 에 의해 사용 lookup_field 습니다. 하지만 그것은 단지 반환 1 개체입니다. 어떻게 사용자 정의 반환했거나 객체?

이것은 나의 모델

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"

이것은 내 Serializer

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() 과 거래하는 Url 등 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 블록 처리하는 많은 쿼리를 매개 변수입니다.

할 수도 있습니다 비슷한 방법을 사용: The SearchFilter 클래스 를 동일한 목표를 달성.

더 많은 정보에 DRF 필터링을 설명서

2021-11-24 10:00:31

다른 언어로

이 페이지는 다른 언어로되어 있습니다

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