سؤال

انا املك class UserProfile محدد الذي يأخذ الافتراضي user كمفتاح خارجي. الآن آخر class A لديه مفتاح خارجي ل UserProfile.
لذا لحفظ أي مثيل في الفئة A ، كيف يمكنني إعطائه كائن Userprofile.

أيضا ، هل صنع ملف class UserProfile يعني ذلك class user لا يزال يستخدم و class UserProfile هل مجرد طاولة أخرى؟
أحتاج إلى معرفة ذلك لأنني يجب أن أعتني بإنشاء ملف تعريف المستخدم ، لذلك يجب أن أعرف ما الذي يتم تخزينه أين؟

-- خجول

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

المحلول

لذا لحفظ أي مثيل في الفئة A ، كيف يمكنني إعطائه كائن Userprofile.

  1. قم بإنشاء تطبيق مع نموذج يحتوي على ملف models.OneToOneField(User) أو أ models.ForeignKey(User, unique=True).
  2. اجعل مشروعك على دراية بمستخدمك من خلال الإشارة إليه من ملف Settings.py AUTH_PROFILE_MODULE = 'myapp.UserProfile'.
  3. إقرأ ال توثيق.

أيضًا ، هل يعني جعل المستخدم فئة مستخدمًا أن مستخدم الفئة لا يزال مستخدمًا وأن مستخدم الفئة هو مجرد جدول آخر؟

نعم ، ستكون قاعدة البيانات الخاصة بك على حد سواء auth_user و user_profile الطاولة. ويرجع ذلك إلى حقيقة أن استخدام UserProfiles لا يعني أن جميع المستخدم يجب أن يكون لديهم ملفات تعريف. فقط الحقول الإضافية المحددة في UserProfile سيكون النموذج في user_profile الطاولة.

أحتاج إلى معرفة ذلك لأنني يجب أن أعتني بإنشاء ملف تعريف المستخدم ، لذلك يجب أن أعرف ما الذي يتم تخزينه أين؟

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

نصائح أخرى

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

  • حدد نموذجًا يحتوي على حقول للمعلومات الإضافية التي ترغب في تخزينها ، أو طرق إضافية ترغب في توفيرها ، وأضف أيضًا A OneToOneField من النموذج الخاص بك إلى نموذج المستخدم. سيضمن ذلك إنشاء مثيل واحد فقط من النموذج الخاص بك يمكن إنشاء لكل مستخدم.
  • تعيين AUTH_PROFILE_MODULE إلى myapp.MyModel, ، أين myapp هو التطبيق الذي يحتوي على النموذج MyModel الذي تريد استخدامه لتخزين معلومات إضافية عن المستخدمين.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top