django - نموذج جانغو:كيفية الإشارة إلى النفس؟




django-models (5)

http://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey

لإنشاء علاقة متكررة - كائن يحتوي على علاقة متعددة مع نفسه - استخدم models.ForeignKey('self') .

لذلك كنت على حق. عادة ما يكون أسرع لتحديد ما إذا كان الكود سيفعل ما تريد عن طريق تشغيله :)

افترض لدينا Employee الطبقة. أريد الحصول على حقل يشير إلى مثيل مختلف من نفس الفئة.

كيف تكتب هذا؟ ماذا عن الكود التالي؟

ref_employee= models.ForeignKey('self',null=True,blank=True)

يوجد قيد يفرض id و ref_employee_id على قيم منفصلة خارج نطاق ORM في Django. ستحتاج إلى إضافة القيد المذكور على مستوى قاعدة البيانات ، عبر SQL في syncdb أو يدوياً.


يمكنك الرجوع إلى نماذج أخرى حسب الاسم (باستخدام سلسلة ، بما في ذلك الحزمة) ، بدلاً من الفئة مباشرة:

لذا ، إذا كانت فئة Employee في تطبيق hr :

class Employee(models.model):
   other_employee = models.ForeignKey('hr.models.Employee', null=True, blank=True)

أعتقد أنه يمكنك حتى استبعاد اسم التطبيق الذي سيبدو كما يلي:

ref_employee= models.ForeignKey('Employee',null=True,blank=True)

لا أعتقد أن القضية تتعلق بتوسيع جانغو.

أقترح حقا أن ننظر في الهندسة المعمارية الخاصة بك وهذا ما سوف يساعدك على تلبية الاحتياجات الخاصة بك. إذا كنت تحصل على هذا الخطأ ليس هناك نقطة على مدى أداء Django. الأداء! ​​= الحجم. يمكن أن يكون لديك نظام يحتوي على أداء مذهل لكنه لا يتغير ، والعكس صحيح.

هل قاعدة بيانات التطبيق الخاصة بك ملزمة؟ إذا كان الأمر كذلك ، فستجد أن قياساتك تقع أيضًا. كيف تخطط للتفاعل مع قاعدة البيانات من Django؟ ماذا يحدث عندما لا تستطيع قاعدة البيانات معالجة الطلبات بالسرعة التي يقبل بها Django؟ ماذا يحدث عندما تتجاوز بياناتك جهازًا ماديًا واحدًا. تحتاج إلى حساب كيف تخطط للتعامل مع تلك الظروف.

علاوة على ذلك ، ماذا يحدث عندما يتجاوز عدد زياراتك خادم تطبيقات واحد؟ قد تكون طريقة تعاملك مع الجلسات في هذه الحالة صعبًا ، وفي أغلب الأحيان ، قد تحتاج إلى بنية مشتركة لا شيء. مرة أخرى هذا يعتمد على طلبك.

باختصار ، اللغات ليست هي التي تحدد المقياس ، فاللغة هي المسؤولة عن الأداء (تعتمد مرة أخرى على التطبيقات الخاصة بك تعمل لغات مختلفة بشكل مختلف). هو التصميم الخاص بك والهندسة المعمارية التي تجعل التدريج حقيقة واقعة.

آمل أن يساعد ، سيكون من دواعي سرورنا تقديم المزيد من المساعدة إذا كان لديك أسئلة.





django django-models