2012-10-09 13 views
14

में विदेशी कुंजी के साथ नया संसाधन कैसे बनाएं I tastypie के लिए अभी भी नया है, लेकिन यह वास्तव में एक साफ पुस्तकालय की तरह लगता है। दुर्भाग्य से, मुझे इसके साथ कुछ कठिनाइयों का सामना करना पड़ रहा है।TastyPie

class Container(models.Model): 
    pass 

class ContainerItem(models.Model): 
    blog = models.ForeignKey('Container', related_name='items') 

# For testing purposes only 
class ContainerResource(ModelResource): 
    class Meta: 
     queryset = Container.objects.all() 
     authorization = Authorization() 

class ContainerItemResource(ModelResource): 
    class Meta: 
     queryset = ContainerItem.objects.all() 
     authorization = Authorization() 

मैं jQuery के माध्यम से एक Container वस्तु बनाया है:

मैं दो मॉडल, और दो उन मॉडलों के साथ जुड़े संसाधन हैं

var data = JSON.stringify({}); 

$.ajax({ 
    url: 'http://localhost:8000/api/v1/container/', 
    type: 'POST', 
    contentType: 'application/json', 
    data: data, 
    dataType: 'json', 
    processData: false 
}); 

हालांकि, जब मैं एक ContainerItem बनाने के लिए जाना है, मुझे यह त्रुटि मिलती है:

container_id may not be NULL 

तो मेरा प्रश्न है: विदेशी मुद्रा संबंध होने पर मैं एक नया संसाधन कैसे बना सकता हूं?

उत्तर

18

विदेशी संसाधन संबंध मॉडलरसोर्स पर स्वचालित रूप से प्रदर्शित नहीं होते हैं। ContainerItemResource पर

blog = tastypie.fields.ForeignKey(ContainerResource, 'blog') 

, और जब आप कंटेनर आइटम पोस्ट तो आप कंटेनर के संसाधन uri पोस्ट कर सकते हैं: आप यह निर्दिष्ट करना होगा।

var containeritemData = {"blog": "/api/v1/container/1/"} 
$.ajax({ 
    url: 'http://localhost:8000/api/v1/containeritem/', 
    type: 'POST', 
    contentType: 'application/json', 
    data: containeritemData, 
    dataType: 'json', 
    processData: false 
}); 

अधिक जानकारी के लिए, इन कड़ियों की जाँच:

इस खंड में, वहाँ कैसे बुनियादी संसाधनों बनाने के लिए का एक उदाहरण है।

http://django-tastypie.readthedocs.org/en/latest/tutorial.html#creating-resources

यहाँ वे एक रिश्ते क्षेत्र बनाने का एक उदाहरण जोड़ें:: नीचे की ओर है, वे उस रिश्ते फ़ील्ड अपने आप आत्मनिरीक्षण के माध्यम से नहीं बनाई गई हैं उल्लेख

http://django-tastypie.readthedocs.org/en/latest/tutorial.html#creating-more-resources

यहाँ के बारे में blurb है रिवर्स रिलेशनशिप जोड़ना:

http://django-tastypie.readthedocs.org/en/latest/resources.html#reverse-relationships

सभी the docs अच्छे हैं यदि आप उन्हें उपन्यास की तरह पढ़ते हैं, लेकिन उनमें से विशिष्ट चीजों को ढूंढना मुश्किल हो सकता है।

+0

हाय डोक्केबेई। यह समाधान की तरह दिखता है, लेकिन मैं इस पर और कहां पढ़ सकता हूं? – NT3RP

+0

@ NT3RP कुछ दस्तावेज़ लिंक जोड़ने के लिए संपादित किया गया। – dokkaebi

+0

मुझे पता है कि यह जवाब बहुत पुराना है, और मेरा प्रश्न थोड़ा ऑफ-विषय है, लेकिन क्या स्वादिष्ट कुछ भी है जब आप संसाधन प्राप्त करते हैं और आपके पास विदेशी संसाधन URL की बजाय विदेशी कुंजी है, तो आपको वास्तविक वस्तु मिलती है ? –

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