Mohssen A Mohssen نشر 14 يوليو 2022 أرسل تقرير نشر 14 يوليو 2022 أحاول الحصول على معرفات فريدة للكائنات في جانغو Django وأستخدم الحقل UUIDField. لست متأكدًا من طريقة عمل هذا الحقل لإنشاء معرفات فريدة لكل كائن في النموذج Model، ولكن حاولت إستخدام الكود التالي # أستخدم الحزمة uuid هنا import uuid from django.db import models class MyModel(models.Model): # قمت بعمل الحقل primary_key id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) class User(models.Model): # ... unique_id = MyModel() المشكلة الآن أنه في كل مرة أحصل على نفس المعرف بالضبط. فمثلا: my_user = User.objects.get(...) id = my_user.unique_id.id ما هو الخطأ هنا، وكيف أصلح هذا الأمر؟ اقتباس
1 Haroun Taha نشر 14 يوليو 2022 أرسل تقرير نشر 14 يوليو 2022 لِما لا تنشئ مُعرف فريد الى Model User مباشرة , دون إنشاء MyModel ومن ثم وضع بداخله حقل UUIDField ومن ثم إعطائه ل Model User ! هذا ليس منطقي أنت هنا: unique_id = MyModel() في الحقيقة أنت تنشئ نسخة منه كل مرة تُخزن في unique_id فئة من نوع Class Model <NumberOfAddressInMemory> example الحل هو إنشاء UUID مباشرة في Model User وحذف الفئة MyModel هكذا : class User(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) اذا كنت لا تُريد حذف الفئة MyModel وتريد علاقة بين الفئة User والفئة MyModel فيمكنك إنشاء علاقة ForeignKey بين الفئتين هكذا سيرتبط كل User مع MyModel مع UUID مختلف بالشكل التالي : class User(models.Model): unique_id = models.ForeignKey(MyModel, on_delete=models.CASCADE) اقتباس
1 محمد حجي2 نشر 14 يوليو 2022 أرسل تقرير نشر 14 يوليو 2022 لقد واجهت المشكلة هذه من قبل حللتها عنطريق إضافة unique=True وأيضا لا تحتاج لجعله primary_key أعتبره primary_key ثانوي: وتعامل معه كأنه primary_key. class Note(models.Model): note_id = models.UUIDField(default=uuid.uuid4, unique=True, editable=False) اقتباس
السؤال
Mohssen A Mohssen
أحاول الحصول على معرفات فريدة للكائنات في جانغو Django وأستخدم الحقل UUIDField. لست متأكدًا من طريقة عمل هذا الحقل لإنشاء معرفات فريدة لكل كائن في النموذج Model، ولكن حاولت إستخدام الكود التالي
المشكلة الآن أنه في كل مرة أحصل على نفس المعرف بالضبط. فمثلا:
ما هو الخطأ هنا، وكيف أصلح هذا الأمر؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.