إنشاء نموذج ديناميكي لجداول متعددة في جانغو
بالنسبة لقاعدة بيانات تحتوي على العديد من الجداول المؤقتة مع المخططات المشتركة والأسماء الديناميكية، فإن دمج جانغو يمثل تحديات . ومع ذلك، من الممكن استخدام وظيفة المصنع لإنشاء نماذج تحتوي على جداول قاعدة بيانات ديناميكية.
إدارة جدول قاعدة البيانات الديناميكية
تقوم وظيفة المصنع بإرجاع نموذج بقاعدة بيانات محددة طاولة. يسمح هذا بربط البيانات الديناميكية بناءً على أسماء الجداول:def getModel(db_table):
class MyClass(models.Model):
# Model definition goes here...
class Meta:
db_table = db_table
return MyClass
يمكنك بعد ذلك إنشاء مثيل للنموذج باستخدام اسم الجدول المحدد:newClass = getModel('29345794_table')
newClass.objects.filter(...)
فئة تعريفية لتسمية الفئة الديناميكية
نظرًا لأن Django يقوم بتخزين سمة _meta للفئة مؤقتًا، فإن فئة التعريف ضرورية لتعديل اسم الفئة في وقت التشغيل:
def getModel(db_table):
class MyClassMetaclass(models.base.ModelBase):
def __new__(cls, name, bases, attrs):
name = db_table
return models.base.ModelBase.__new__(cls, name, bases, attrs)
class MyClass(models.Model):
__metaclass__ = MyClassMetaclass
class Meta:
db_table = db_table
return MyClass
اعتبارات إضافية
على الرغم من الاعتقاد في البداية أنه غير قابل للتغيير، إلا أنه يمكن تعيين جدول قاعدة البيانات ديناميكيًا:MyModel._meta. db_table = '10293847_table'
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3