سؤال

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

User
  |<-FK- UserProfile
  |
  |<-FK- IdentityType1
  |<-FK- IdentityType1
  |<-FK- IdentityType2
  |<-FK- IdentityType3 (current)
  |<-FK- IdentityType3
  |<-FK- IdentityType3

يمكن توصيل حساب المستخدم بعدد n من الهويات من أنواع مختلفة ولكن يمكنه استخدام هوية واحدة فقط في وقت واحد.

على ما يبدو ، فإن طريقة Django هي جمع جميع الهويات المتصلة (user.identitytype1_set.select_reled ()) في QuerySet ثم تحقق من كل واحدة من نوع من الحقل "الحالي".

سؤال: هل يمكن لأي شخص أن يفكر في طريقة أفضل لتحديد الهوية "الحالية" من القيام بثلاثة استعلامات ديسيبل (واحدة لكل هوية)؟

هل كانت مفيدة؟

المحلول

لماذا لا تتبع ملف التعريف الذي يتم استخدامه مع الجلسة بدلاً من قاعدة البيانات. ليس من المنطقي تخزين الحالة في قاعدة البيانات ، وهذا هو ما هي الجلسات.

نصائح أخرى

قد يكون من الجيد أن يكون لديك المستخدم لتتبع الهوية التي يتم استخدامها حاليًا.

على افتراض أن كل هوية نموذج مختلف ، يمكنك القيام بأحد أمرين لتحقيق ذلك.

  • يمكن أن يكون لديك فئة نموذجية مشتركة ترثها كل فئة هوية ، ويمكنك إضافة مفتاح خارجي على ملف التعريف إلى فئة هوية الوالدين.

  • بدلاً من ذلك ، إذا لم يكن الوراثة منطقية عملية ، فيمكنك استخدامها العلاقات العامة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top