لعرض البيانات من جداول متعددة مرتبطة في جانغو، غالبًا ما يكون الانضمام الداخلي ضروريًا. في هذه المقالة، سوف نستكشف كيفية إجراء صلة داخلية باستخدام Django's ORM (Object-Relational Mapper).
علاقات النماذج
النماذج.py في يحدد الكود المقدم علاقات الجدول التالية:
الانضمام الداخلي باستخدام Select_dependent
لتحقيق تأثير الانضمام الداخلي، يمكن استخدام طريقة Django's Select_dependent. فهو يحدد مسبقًا الكائنات ذات الصلة جنبًا إلى جنب مع الكائنات الأساسية، مما يقلل عدد استعلامات قاعدة البيانات المطلوبة للوصول إلى البيانات ذات الصلة.
في view.py، يمكن استخدام التعليمة البرمجية التالية لإجراء صلة داخلية:
pubs = publication.objects.select_related('country', 'country_state', 'city')
فحص SQL الذي تم إنشاؤه
باستخدام str(pubs.query)، يمكن فحص استعلام SQL الذي تم إنشاؤه. سيشبه استعلام SQL المقدم، مع صلات داخلية بين الجداول:
SELECT "publication"."id", "publication"."title", ..., "country"."country_name", ... FROM "publication" INNER JOIN "country" ON ( "publication"."country_id" = "country"."id" ) INNER JOIN "countrystate" ON ( "publication"."countrystate_id" = "countrystate"."id" ) INNER JOIN "city" ON ( "publication"."city_id" = "city"."id" )
الوصول إلى البيانات ذات الصلة
بعد الانضمام الداخلي، يمكن الوصول إلى البيانات ذات الصلة من خلال سمات كائن النموذج المعني. على سبيل المثال، لعرض اسم المدينة لكل منشور:
{% for p in pubs %} {{ p.city.city_name}} # p.city has been populated in the initial query # ... {% endfor %}
من خلال الاستفادة من الروابط الداخلية المحددة في Django، يمكن تنفيذها بكفاءة لاسترداد البيانات من الجداول ذات الصلة، وتقليل استعلامات قاعدة البيانات وتحسين الأداء.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3