2012-02-08 21 views
7

मैं एक परियोजना के लिए एक एपीआई पर काम कर रहा हूँ के माध्यम से manytomany बनाने के लिए और मैं इस तरह OrderProducts के माध्यम से एक रिश्ता आदेश/उत्पाद है:Django-tastypie - संबंध

सूची/models.py

class Product(models.Model): 
    ... 
में

आदेश/models.py में

class Order(models.Model): 
    products = models.ManyToManyField(Product, verbose_name='Products', through='OrderProducts') 
    ... 

class OrderProducts(models.Model): 
    order = models.ForeignKey(Order) 
    product = models.ForeignKey(Product) 
    ... 

अब, जब मैं एपीआई के माध्यम से एक आदेश लोड मैं भी संबंधित उत्पाद प्राप्त करना चाहते हैं, तो मैं (Django-tastypie के साथ) इस कोशिश की:

आदेश में/api.py

class OrderResource(ModelResource): 
    products = fields.ToManyField('order.api.OrderProductsResource', products, full=True) 

    class Meta: 
     queryset = Order.objects.all() 
     resource_name = 'order' 

class OrderProductsRessource(ModelResource): 
    order = fields.ToOneField(OrderResource, 'order') 

    class Meta: 
     queryset = OrderProducts.objects.all() 
     resource_name = 'order/products' 

जो मुझे दे यह त्रुटि संदेश: " 'उत्पाद' ऑब्जेक्ट कोई विशेषता 'ऑर्डर' भी है।" तो मुझे यकीन नहीं है कि क्या गलत है या गुम है, शायद मुझे अपने उत्पाद संसाधन में कुछ भी चाहिए लेकिन मैंने सफलता के बिना कई तरीकों की कोशिश की। किसी भी मदद स्वागत किया जाएगा :)

उत्तर

2

समस्या इस लाइन के साथ है:

order = fields.ToOneField(OrderResource, 'order') 

त्रुटि बहुत सीधी-सपाट है। Product में वास्तव में order नामक एक विशेषता नहीं है। आपकी OrderProduct तालिका में शामिल है, लेकिन आपका एम 2 एम OrderProduct एस वापस नहीं करता है, यह Product एस देता है।

+0

मुझे शायद अभी भी कुछ याद आ रहा है लेकिन मुझे नहीं पता कि ToOneField का उपयोग किस क्षेत्र में किया जाना चाहिए या एम 2 एम वापस क्या करना है? – djevg

+0

आपको 'ProductResource' की आवश्यकता है' ऑर्डर प्रोडक्ट रिसोर्स 'नहीं। यह तुम्हारी समस्या है। यह मॉडल पर एम 2 एम स्थापित करने जैसा है। आप 'मॉडल नहीं करते हैं। कई टोनीफिल्ड (ऑर्डर प्रोडक्ट)'; आप 'मॉडल करते हैं। कई टोनीफिल्ड (उत्पाद) '। यह वही है, आप 'उत्पाद संसाधन' के लिंक के साथ अपना 'ToManyField' बनाते हैं जो' उत्पाद 'देता है। –

+0

ठीक है, समझ गया;) कुछ कारणों से, मैंने सोचा कि मुझे एपीआई के भीतर पूरे रिश्ते को फिर से परिभाषित करना है, लेकिन इससे बेहतर है ... आपकी मदद के लिए धन्यवाद। – djevg

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