هل هناك طريقة لإجراء استعلام واحد فقط لفئة فائقة ثم الحصول على قائمة بجميع الفئات الفرعية المعنية في جانغو؟[ينسخ]
-
12-12-2019 - |
سؤال
التكرار المحتمل:
يقوم Django Model Inheritance بالاستعلام عن جدول مركزي
متابعة المستندات الرسمية الموجودة هنا
https://docs.djangoproject.com/en/dev/topics/db/models/#multi-table-inheritance
أرى أنه يمكنني الاستعلام عن المكان الذي يعد مطعمًا ممتازًا عبر
p = Place.objects.filter(name="Bob's Cafe")
إذن، في هذه المرحلة، هل توجد طريقة للتحقق ومعرفة ما إذا كانت الكائنات التي تم إرجاعها هي أيضًا من النوع الفرعي Restaurant وإذا كان الأمر كذلك، يمكنك الوصول إلى حقول الفئات الفرعية الخاصة بها؟
في الوقت الحالي، كل ما يمكنني قوله هو أن جميع الكائنات التي تم إرجاعها تنتمي إلى فئة المكان وأن خصائص وأساليب فئتها الفرعية غير متوفرة نظرًا لعدم تصنيف الكائن كفئة فرعية له.
إذا لم تكن هذه المنهجية ممكنة، فما هي أفضل الممارسات المتبعة في محاولة تجريد فئة فائقة وتقليل الحمل الزائد للاستعلامات عند محاولة الحصول على قائمة تحتوي على جميع نماذج الفئات الفرعية؟أفهم من الناحية النظرية أنه يمكنني إجراء استعلام عن كل فئة فرعية ثم دمج القائمة معًا ولكن بعد ذلك سيتعين علي القيام بالمزيد إذا أردت ترتيب تلك القائمة حسب التاريخ.
المحلول
إذن، في هذه المرحلة، هل توجد طريقة للتحقق ومعرفة ما إذا كانت الكائنات التي تم إرجاعها هي أيضًا من النوع الفرعي Restaurant وإذا كان الأمر كذلك، يمكنك الوصول إلى حقول الفئات الفرعية الخاصة بها؟
إذا قمت بالاستعلام عن نموذج المكان، فإن الكائنات التي تم إرجاعها هي مثيلات المكان التي ليس لديها معرفة بأي فئات فرعية مرتبطة بـ MTI.تحتاج إلى توفير حقل في الفئة الفائقة لربطها بالفئة الفرعية.يرى إنشاء تصميم وراثة متعدد الجداول بشكل عام في جانغو