لا يمكن تعيين - يجب أن يكون مثيل "userprofile"
-
04-10-2019 - |
سؤال
انا املك class UserProfile
محدد الذي يأخذ الافتراضي user
كمفتاح خارجي. الآن آخر class A
لديه مفتاح خارجي ل UserProfile
.
لذا لحفظ أي مثيل في الفئة A ، كيف يمكنني إعطائه كائن Userprofile.
أيضا ، هل صنع ملف class UserProfile
يعني ذلك class user
لا يزال يستخدم و class UserProfile
هل مجرد طاولة أخرى؟
أحتاج إلى معرفة ذلك لأنني يجب أن أعتني بإنشاء ملف تعريف المستخدم ، لذلك يجب أن أعرف ما الذي يتم تخزينه أين؟
-- خجول
المحلول
لذا لحفظ أي مثيل في الفئة A ، كيف يمكنني إعطائه كائن Userprofile.
- قم بإنشاء تطبيق مع نموذج يحتوي على ملف
models.OneToOneField(User)
أو أmodels.ForeignKey(User, unique=True)
. - اجعل مشروعك على دراية بمستخدمك من خلال الإشارة إليه من ملف Settings.py
AUTH_PROFILE_MODULE = 'myapp.UserProfile'
. - إقرأ ال توثيق.
أيضًا ، هل يعني جعل المستخدم فئة مستخدمًا أن مستخدم الفئة لا يزال مستخدمًا وأن مستخدم الفئة هو مجرد جدول آخر؟
نعم ، ستكون قاعدة البيانات الخاصة بك على حد سواء auth_user
و user_profile
الطاولة. ويرجع ذلك إلى حقيقة أن استخدام UserProfiles لا يعني أن جميع المستخدم يجب أن يكون لديهم ملفات تعريف. فقط الحقول الإضافية المحددة في UserProfile
سيكون النموذج في user_profile
الطاولة.
أحتاج إلى معرفة ذلك لأنني يجب أن أعتني بإنشاء ملف تعريف المستخدم ، لذلك يجب أن أعرف ما الذي يتم تخزينه أين؟
قام جيمس بينيت بإنشاء تطبيقين لطيفين ، حيث سيكون مع بضع ساعات من القراءة الدقيقة مساعدة كبيرة خاصة عندما يتعلق الأمر بجزء تسجيل المستخدم. اذهب انظر Django-registration و Django-profiles.
نصائح أخرى
أفترض الخاص بك UserProfile
يهدف النموذج إلى تخزين معلومات إضافية عن المستخدمين. إذا كان الأمر كذلك ، فهناك توثيق حول أفضل نهج للقيام بذلك ، وهو باختصار هو:
- حدد نموذجًا يحتوي على حقول للمعلومات الإضافية التي ترغب في تخزينها ، أو طرق إضافية ترغب في توفيرها ، وأضف أيضًا A
OneToOneField
من النموذج الخاص بك إلى نموذج المستخدم. سيضمن ذلك إنشاء مثيل واحد فقط من النموذج الخاص بك يمكن إنشاء لكل مستخدم. - تعيين
AUTH_PROFILE_MODULE
إلىmyapp.MyModel
, ، أينmyapp
هو التطبيق الذي يحتوي على النموذجMyModel
الذي تريد استخدامه لتخزين معلومات إضافية عن المستخدمين.