Sunday, 15 June 2014

order_by intermediate table for given relation in SQL with Django ORM -


 <कोड> वर्ग पोषक तत्व (models.Model): टैगनाम = models.CharField (MAX_LENGTH = 10) वर्ग FoodNutrientAmount (मॉडल। मॉडल): पोषक तत्व = models.ForeignKey (पोषक तत्व) खाद्य = models.ForeignKey (खाद्य) राशि = models.FloatField () वर्ग खाद्य (models.Model): पोषक तत्वों = models.ManyToManyField (पोषक तत्व, = FoodNutrientAmount के माध्यम से,)   

तो, मैं फूड्स की राशि द्वारा आदेश दिया प्राप्त कर सकते हैं टैगनाम = FOL एक सूची समझ के साथ पोषक तत्व:

  ordered_fnas = FoodNutrientAmount। objects.filter (nutrient__tagname = "FOL") .order_by ( '- राशि') ordered_foods_by_most_fol =  [ordered_fnas में फना के लिए fna.food]  

मैं मिल सकता है इस तरह के बिना एक क्वेरीसमूह के रूप में एक iterable पूरी बात को स्मृति में ले जा रहे हैं?

शायद food.objects.anotate या अतिरिक्त का उपयोग कर एक अलग दृष्टिकोण है? मैं इस समय ऐसा करने का एक शानदार तरीका नहीं सोच सकता।

मैं values_list के साथ मिल सकता हूं; लेकिन, मैं पीकेएस का आदेश दिया सूची और नहीं खाद्य वस्तुओं है कि मैं चाहता हूँ। के क्वेरीसमूह मिल

  FoodNutrientAmount.objects.filter (nutrient__tagname = 'FOL')। ऑर्डर-बी ('- राशि')। VÃÆ'à  एक € ™ ÃÆ'à ¢ एक, ¬ Å ¡Ãƒâ € SA, एक · alues_list ('भोजन', फ्लैट = सच)    

संपादित करें:

यह कई-से-कई रिश्ते हैं तो आप संभवतः इसका लाभ उठा सकते हैं कैसे के बारे में FoodNutrientAmount के लिए डिफ़ॉल्ट अनुक्रम जोड़ने और फिर आप बस सामान्य manytomany प्रश्नों कर सकते हैं

  वर्ग FoodNutrientAmount (models.Model):। पोषक तत्व = models.ForeignKey (पोषक तत्व) भोजन = मॉडल। विदेशी (भोजन) राशि = मॉडल। फ्लोटफ़िल्ड () वर्ग मेटा: ऑर्डरिंग = ('-एमएमटी',)   

तब आप बस कॉल कर सकते हैं -

  पौष्टिक_फुड्स = खाद्य.ओब्जेक्ट्सफिल्टर (पोषक तत्वों_संबद्ध = 'एफओएल')। आदेश-द्वारा ('खाद्योत्तर आहार')    

No comments:

Post a Comment