में विदेशी कुंजी ऑब्जेक्ट्स को सीरियलाइज करना मैं फ्लैग और एंड्रॉइड ऐप्स दोनों के साथ उपयोग करने के लिए Django में कुछ रीस्टफुल सेवाओं को विकसित करने पर काम कर रहा हूं।Django
सेवा इंटरफ़ेस का विकास करना काफी आसान रहा है, लेकिन मैं उन वस्तुओं को क्रमबद्ध करने के साथ एक समस्या में भाग रहा हूं जिनके पास विदेशी कुंजी है और कई रिश्ते हैं।
class Artifact(models.Model):
name = models.CharField(max_length = 255)
year_of_origin = models.IntegerField(max_length = 4, blank = True, null = True)
object_type = models.ForeignKey(ObjectType, blank = True, null = True)
individual = models.ForeignKey(Individual, blank = True, null = True)
notes = models.TextField(blank = True, null = True)
तब मैं, इस तरह इस मॉडल पर एक प्रश्न प्रदर्शन करेंगे select_related()
का उपयोग कर, यह सुनिश्चित करें कि विदेशी कुंजी रिश्तों का पालन कर रहे होने के लिए:
मैं इस तरह एक मॉडल है
artifact = Artifact.objects.select_related().get(pk=pk)
एक बार मेरे पास ऑब्जेक्ट हो जाने पर, मैं इसे क्रमबद्ध करता हूं, और उसे वापस अपने दृश्य में पास करता हूं:
serializers.serialize("json", [ artifact ])
यह वही है जो मैं वापस प्राप्त करता हूं, ध्यान दें कि विदेशी कुंजी (object_type और व्यक्तिगत) सिर्फ आईडी से संबंधित वस्तुओं के लिए हैं।
[
{
pk: 1
model: "artifacts.artifact"
fields: {
year_of_origin: 2010
name: "Dummy Title"
notes: ""
object_type: 1
individual: 1
}
}
]
यह महान है, लेकिन क्या मैं जब select_related()
प्रयोग करने के लिए उम्मीद थी कि यह स्वचालित रूप से विदेशी कुंजी क्षेत्रों संबंधित वस्तु के साथ ही नहीं, वस्तु की आईडी को पॉप्युलेट होता था।
मुझे हाल ही में Django में परिवर्तित किया गया है, लेकिन केकपीएचपी के साथ एक उचित समय में विकसित किया गया है।
मुझे केक ओआरएम के बारे में वास्तव में क्या पसंद आया था कि यह रिश्ते का पालन करेगा और डिफ़ॉल्ट रूप से नेस्टेड ऑब्जेक्ट्स बनायेगा, जब आप अपनी क्वेरी को कॉल करते समय रिश्तों को अनइंड करने की क्षमता के साथ।
इसने सेवाओं को सारणी के लिए बहुत आसान बना दिया जिसने मामले के आधार पर किसी भी हस्तक्षेप की आवश्यकता नहीं थी।
मुझे लगता है कि Django डिफ़ॉल्ट रूप से ऐसा नहीं करता है, लेकिन क्या किसी ऑब्जेक्ट को स्वचालित रूप से क्रमबद्ध करने और इसके सभी संबंधित ऑब्जेक्ट्स को क्रमबद्ध करने का कोई तरीका है? किसी भी सुझाव या पढ़ने की सराहना की जाएगी।
[पीईपी -008] (http://www.python.org/dev/peps/pep-0008) –