2016-02-18 10 views
8

मैं Django Rest framework का उपयोग कर रहा हूं। मैं कई मॉडलों को क्रमबद्ध करना चाहता हूं और प्रतिक्रिया के रूप में भेजना चाहता हूं। वर्तमान में मैं प्रति दृश्य केवल एक मॉडल भेज सकता हूं (जैसे CartView नीचे केवल कार्ट ऑब्जेक्ट भेजता है)। निम्नलिखित मॉडल (असंबद्ध) वहां हो सकते हैं।Django आराम फ्रेमवर्क में एकाधिक मॉडल?

class Ship_address(models.Model): 
    ... 

class Bill_address(models.Model): 
    ... 

class Cart(models.Model): 
    ... 

class Giftwrap(models.Model): 
    ... 

मैं DjangoRestMultiplemodels उपयोग करने की कोशिश, यह ठीक काम करता है लेकिन कुछ सीमाएँ हैं। क्या कोई अंतर्निहित तरीका है? क्या मैं निम्नलिखित दृश्य में बनाए गए धारावाहिक को जोड़ नहीं सकता?

class CartView(APIView): 
    """ 
    Returns the Details of the cart 
    """ 

    def get(self, request, format=None, **kwargs): 
     cart = get_cart(request) 
     serializer = CartSerializer(cart) 
     # Can't I append anything to serializer class like below ?? 
     # serializer.append(anotherserialzed_object) ?? 
     return Response(serializer.data) 

मुझे वास्तव में डीआरएफ पसंद है। लेकिन यह उपयोग-केस (एकाधिक ऑब्जेक्ट्स भेजने का) मुझे सोचता है कि यदि एक सादा पुराना Django व्यू लिखना ऐसी आवश्यकता के लिए बेहतर होगा।

उत्तर

11

आप इसे कस्टमाइज़ कर सकते हैं, और यह बहुत अजीब नहीं होगा, क्योंकि यह APIView है (ModelViewSet के विपरीत, जिसमें से एक व्यक्ति जीईटी को एक मॉडल वापस करने की अपेक्षा करेगा) उदा। आप अपने जीईटी प्रतिक्रिया

def get(self, request, format=None, **kwargs): 
    cart = get_cart(request) 
    cart_serializer = CartSerializer(cart) 
    another_serializer = AnotherSerializer(another_object) 

    return Response({ 
     'cart': cart_serializer.data, 
     'another': another_serializer.data, 
     'yet_another_field': 'yet another value', 
    }) 
def get(self, request, format=None, **kwargs): 
    cart = get_cart(request) 
    cart_serializer = CartSerializer(cart) 
    another_serializer = AnotherSerializer(another_object) 

    return Response({ 
     'cart': cart_serializer.data, 
     'another': another_serializer.data, 
     'yet_another_field': 'yet another value', 
    }) 
+0

में विभिन्न मॉडलों से कई ऑब्जेक्ट्स वापस कर सकते हैं, पेजिंग की अपेक्षा की जाती है? – latsha

+0

यदि आप पेजिंग के साथ काम करने के तरीके के साथ अपना जवाब बढ़ाएंगे तो मैं बहुत आभारी हूं। – latsha

संबंधित मुद्दे