اذهب إلى المحتوى

السؤال

نشر

أحاول الحصول على معرفات فريدة للكائنات في جانغو 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

ما هو الخطأ هنا، وكيف أصلح هذا الأمر؟

Recommended Posts

  • 1
نشر

لِما لا تنشئ مُعرف فريد الى 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)

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...