يوفر Django's ORM (رسم الخرائط الارتباطية للكائنات) طريقة قوية ومرنة للتفاعل مع قاعدة البيانات الخاصة بك باستخدام كائنات Python. إحدى ميزاته الأكثر فائدة هي وراثة النماذج، والتي تسمح لك بتوسيع النماذج وإعادة استخدامها بطريقة نظيفة وفعالة. في منشور المدونة هذا، سنستكشف الطرق المختلفة لتوسيع نماذج Django ونقدم أمثلة عملية لمساعدتك على فهم كيفية الاستفادة من هذه الميزة في مشاريعك الخاصة.
يدعم جانغو عدة أنواع من وراثة النموذج:
تتيح لك الفئات الأساسية المجردة تحديد الحقول والأساليب المشتركة التي سيتم مشاركتها بين نماذج متعددة. هذه الفئات نفسها غير ممثلة في قاعدة البيانات؛ وبدلاً من ذلك، فإنها توفر قاعدة يمكن أن ترث منها النماذج الأخرى.
لنفترض أنك تريد إنشاء مجموعة من النماذج التي تشترك في معلومات الاتصال الشائعة. يمكنك تحديد فئة أساسية مجردة للاحتفاظ بهذه المعلومات.
from django.db import models class ContactInfo(models.Model): phone_number = models.CharField(max_length=15) email = models.EmailField() class Meta: abstract = True class Person(ContactInfo): first_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100) class Company(ContactInfo): company_name = models.CharField(max_length=255) address = models.CharField(max_length=255)
ContactInfo هي فئة أساسية مجردة تحتوي على حقول رقم الهاتف والبريد الإلكتروني. يرث كل من الشخص والشركة هذه الحقول، بالإضافة إلى الحقول المحددة الخاصة بهما.
يسمح لك الميراث متعدد الجداول بإنشاء نموذج أصلي يتم تمثيله في جدول قاعدة البيانات الخاص به. ترث النماذج الفرعية الحقول من النموذج الأصلي ولها حقول إضافية خاصة بها. يحتوي كل نموذج على جدول خاص به في قاعدة البيانات، مما يسمح لك بالاستعلام عن البيانات ومعالجتها بشكل مستقل.
لنفترض أن لديك نموذج شخص أساسي وتريد إضافة حقول إضافية خاصة بالموظفين.
from django.db import models class Person(models.Model): first_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100) class Employee(Person): employee_id = models.CharField(max_length=100) department = models.CharField(max_length=100)
في هذه الحالة، يقوم الموظف بتوسيع "الشخص" بحقول إضافية "معرف_الموظف" و"القسم". يحتوي كلا النموذجين على جداول قاعدة البيانات الخاصة بهما، ويتضمن جدول الموظف مفتاحًا خارجيًا لجدول الأشخاص.
تسمح لك نماذج الوكيل بتعديل سلوك النموذج الحالي دون تغيير مخططه. يمكنك استخدام نماذج الوكيل لإضافة طرق مخصصة أو تغيير مدير النماذج الافتراضي، دون التأثير على الجدول الأساسي.
افترض أن لديك نموذج شخص وتريد إنشاء نموذج وكيل لتوفير وظائف إضافية، مثل طريقة مخصصة.
from django.db import models class Person(models.Model): first_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100) def full_name(self): return f"{self.first_name} {self.last_name}" class PersonProxy(Person): class Meta: proxy = True def greet(self): return f"Hello, my name is {self.full_name()}"
PersonProxy هو نموذج وكيل يضيف طريقة ترحيب إلى نموذج الشخص. يظل مخطط قاعدة البيانات للشخص دون تغيير.
تكون الفئات الأساسية المجردة مفيدة عندما يكون لديك حقول وأساليب تريد إعادة استخدامها عبر نماذج متعددة، دون إنشاء جداول قاعدة بيانات غير ضرورية.
يُعد الوراثة متعددة الجداول مثالية عندما تحتاج إلى توسيع وظائف النموذج الحالي والحفاظ على علاقة واضحة بين النماذج الأصلية والفرعية.
من الأفضل استخدام نماذج الوكيل عندما تريد إضافة سلوكيات جديدة أو طرق مخصصة إلى نموذج دون تغيير مخطط قاعدة البيانات الخاصة به.
يعد توسيع نماذج Django طريقة قوية لإنشاء تعليمات برمجية قابلة لإعادة الاستخدام وقابلة للصيانة. سواء كنت تشارك الحقول المشتركة مع فئات أساسية مجردة، أو تضيف حقولًا جديدة مع وراثة جداول متعددة، أو تخصيص السلوك باستخدام نماذج الوكيل، فإن Django يوفر الأدوات التي تحتاجها لإنشاء تطبيقات قوية وقابلة للتطوير.
لا تتردد في تجربة استراتيجيات الميراث هذه لمعرفة مدى ملاءمتها لمشاريعك الخاصة. يمكن أن يؤدي فهم وراثة النموذج واستخدامه إلى تعزيز سير عمل التطوير بشكل كبير ويؤدي إلى تعليمات برمجية أكثر نظافة وتنظيمًا.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3