ModelViewset में django

0

सवाल

मैं नौसिखिया हूँ Django के बाकी-ढाँचा । मैं का उपयोग Modelviewset बनाने के लिए एपीआई के लिए परियोजना. मैं प्राप्त करना चाहते हैं सूची की बात नहीं आईडी के आधार पर और मैं का उपयोग 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"

यह मेरी Serializer

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

कृपया मेरी मदद करने के लिए sovle इस समस्या है. बहुत बहुत धन्यवाद

1

सबसे अच्छा जवाब

1

आप उपयोग करना चाहते हैं फिल्टर एपीआई पर लौटने के लिए और कई वस्तुओं. लेकिन lookup_field है करने के लिए इस्तेमाल किया प्रदर्शन के लिए वस्तु के देखने का अलग-अलग मॉडल का उदाहरण. वहाँ रहे हैं कई तरीके को प्राप्त करने के लिए अपने लक्ष्य है, लेकिन मैं तुम्हें दिखाता हूँ फिल्टर क्वेरी पैरामीटर का उपयोग करके.

आप ओवरराइड कर सकते हैं get_queryset() सौदा करने के लिए यूआरएल के साथ इस तरह के रूप में http://yourdoamin.com/api/ratings?product=1 ( यहाँ हम मान लें कि आप फ़िल्टर करना चाहते हैं उत्पाद आईडी ).

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ý
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में