ما نوع الخاصية الذي أستخدمه لوضع مستخدم user_id () للمستخدم في مخزن البيانات؟
-
22-09-2019 - |
سؤال
هذا هو السبب في أنني بحاجة إلى وضع user_id () في مخزن البيانات:
لا يتم تحديث قيمة المستخدم في مخزن البيانات إذا قام المستخدم بتغيير عنوان بريدها الإلكتروني. قد يتم علاج هذا في إصدار مستقبلي. حتى ذلك الحين ، يمكنك استخدام قيمة المستخدم user_id () كمعرف فريد مستقر للمستخدم.
http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#users_user
داخل مخزن البيانات ، تكون القيمة مساوية لعنوان البريد الإلكتروني بالإضافة إلى معرف المستخدم الفريد. إذا قام المستخدم بتغيير عنوان بريدها الإلكتروني ، فلن تساوي قيمة المستخدم الجديدة قيمة المستخدم الأصلية في استعلامات مخزن البيانات أو عند مقارنتها بواسطة التطبيق. إذا كان تطبيقك يحتاج إلى معرف مستقر لا يتغير ، فيمكنك تخزين المعرف الفريد بشكل منفصل عن قيمة المستخدم.
http://code.google.com/appengine/docs/python/users/userobjects.html
كيف فعلتها؟
وكيف عرفت (أو أين بحثت عنها؟)
المحلول
الإجابة المعتادة هي "لا خاصية": إذا كنت بحاجة إلى معرف مستقر ، فربما يكون ذلك لأنك تبحث عن المستخدمين ، وفي هذه الحالة يجب أن تستخدمه كاسم رئيسي للكيان ، مثل ذلك:
class UserInfo(db.Model):
is_admin = db.BooleanProperty(required=True, default=False)
user_info = UserInfo.get_or_insert(users.get_current_user().user_id())
إذا كنت بحاجة حقًا إلى تخزين معرف للمستخدم في مكان آخر ، فيمكنك استخدام DB.StringProperty لتخزين معرف المستخدم.