तो मेरे पास एक मॉडल "साइट" है जिसमें एक विशेषता देश है। मुझे एक समापन बिंदु की आवश्यकता है जो मेरे विचार में मेरे पास निम्नलिखित सभी देशों को प्राप्त करे:

 countries = Site.objects.order_by().values("country").distinct()

यह एक क्वेरीसेट देता है। इस डेटा को वापस करने का सबसे अच्छा तरीका क्या है? एक धारावाहिक एक मॉडल का उपयोग करता है, है ना? लेकिन यह सिर्फ तार की एक क्वेरी है..

0
sg_sg94 31 मार्च 2020, 16:40

1 उत्तर

सबसे बढ़िया उत्तर

यदि आपको केवल देश के मूल्यों की सूची की आवश्यकता है, तो आप values_list का उपयोग कर सकते हैं:

countries = list(Site.objects.values_list("country",flat=True).order_by("country").distinct())

values_list टुपल्स लौटाता है जिसे फिर से चालू किया जा सकता है, flat=True इसे एकल मानों का एक क्वेरीसेट देता है (इसलिए आपको अभी भी इसे अपने अंतिम बिंदु में एक जेसन प्रतिक्रिया में लौटने के लिए एक सूची में परिवर्तित करने की आवश्यकता होगी। )

तो आपका समापन बिंदु कुछ इस तरह समाप्त हो सकता है (DRF का उपयोग करके):

from rest_framework.views import APIView

class CountriesView(APIView):
    def get(self, request, *args, **kwargs):
        sites = Site.objects.all()
        country_list = list(sites.values_list("country", flat=True).order_by("country").distinct())
        data = {"countries": country_list}
        return Response(data=data, status=200)
2
RHSmith159 31 मार्च 2020, 13:54