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

شرح أنواع العلاقات في django

Marwan Ben Chami

السؤال

Recommended Posts

  • 1

أرجو التعليق أسفل فيديو الدورة لمساعدتك بشكل أفضل وطرح الأسئلة العامة هنا، وستجد المقالات والنقاشات التالية عونًا لك:

وتصنف العلاقات في Django إلى ثلاثة أنواع رئيسية:

  • علاقات واحد إلى واحد (One-to-One Relationships)
  • علاقات واحد إلى كثير (One-to-Many Relationships)
  • علاقات كثير إلى كثير (Many-to-Many Relationships)

علاقات واحد إلى واحد (One-to-One Relationships)

في علاقة واحد إلى واحد، يرتبط كل كائن من كائنين بحد أقصى بكائن واحد من الكائن الآخر، أي أن يكون لدى كل شخص بطاقة هوية واحدة، ولكن يمكن أن يكون لدى كل بطاقة هوية شخص واحد فقط.

لنفترض أن لدينا نموذجين: Person و IdentityCard، ونريد أن نربط كل شخص ببطاقة هوية واحدة فقط، وكل بطاقة هوية بشخص واحد فقط.

# models.py

class Person(models.Model):
    name = models.CharField(max_length=255)
    identity_card = models.OneToOneField(
        'IdentityCard', on_delete=models.CASCADE)

class IdentityCard(models.Model):
    number = models.CharField(max_length=10)

هنا نستخدم حقل OneToOneField لربط الكائنين. يُحدد الحقل on_delete ما يجب القيام به بالكائن المرتبط عندما يتم حذف الكائن الرئيسي، ونريد حذف الكائن المرتبط أيضًا، لذلك نستخدم on_delete=models.CASCADE.

علاقات واحد إلى كثير (One-to-Many Relationships)

تتيح لنا ربط كل كائن من كائن واحد بالعديد من الكائنات من كائن آخر، مثلاً لدى كل مدرس العديد من الطلاب، ولكن يمكن أن يكون لدى كل طالب مدرس واحد فقط.

ولنفترض أن لدينا نموذجين هما Teacher و Student، ونريد أن نربط كل مدرس بالعديد من الطلاب، وكل طالب بمدرس واحد فقط.

# models.py

class Teacher(models.Model):
    name = models.CharField(max_length=255)
    students = models.ManyToManyField(
        'Student', through='Enrollment')

class Student(models.Model):
    name = models.CharField(max_length=255)

 نعتمد على حقل ManyToManyField لربط الكائنين، ويُستخدم حقل through لتحديد جدول وسيط يربط الكائنين هو Enrollment.

علاقات كثير إلى كثير (Many-to-Many Relationships)

يرتبط كل كائن من كائنين بالعديد من الكائنات من الكائن الآخر، مثل أن يكون لدى كل كتاب العديد من المؤلفين، ويمكن أن يكون لدى كل مؤلف العديد من الكتب.

ولنفترض أن لدينا نموذجين Book و Author، ونريد أن نربط كل كتاب بالعديد من المؤلفين، وكل مؤلف بالعديد من الكتب.

# models.py

class Book(models.Model):
    title = models.CharField(max_length=255)
    authors = models.ManyToManyField(
        'Author', through='BookAuthor')

class Author(models.Model):
    name = models.CharField(max_length=255)

لاحظ حقل ManyToManyField لربط الكائنين، ويُستخدم حقل through لتحديد جدول وسيط يربط الكائنين يسمى BookAuthor.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

العلاقات فى Django هى العلاقات العادية فى ال database وهى ثلاثة علاقات رئيسية وهم :

العلاقة الواحد للواحد (one to one).

العلاقة الواحد إلى الكثير(one to many).

والعلاقة الكثير إلى الكثير (many to many).

وده شرح كل وحادة منهم على حدا:

العلاقة الواحد للواحد (one to one) :

 

تستخدم عندما يكون لديك نموذج واحد يمكن أن يرتبط بعدة نماذج.

مثال: علاقة بين نموذج "كتاب" ونموذج "مؤلف"، حيث يمكن للكتاب أن يكون له أكثر من مؤلف.

العلاقة الواحد إلى الكثير(one to many):

تستخدم عندما يكون لديك نموذج واحد يمكن أن يرتبط بعدة نماذج.

مثال: علاقة بين نموذج "كتاب" ونموذج "مؤلف"، حيث يمكن للكتاب أن يكون له أكثر من مؤلف.

والعلاقة الكثير إلى الكثير (many to many):

تستخدم عندما يكون لديك نموذج يمكن أن يرتبط بعدة نماذج، والنماذج الأخرى يمكنها أيضًا أن تكون مرتبطة بعدة نماذج.

مثال: علاقة بين نموذج "طالب" ونموذج "دورة"، حيث يمكن للطلاب أن يكونوا مسجلين في عدة دورات وكل دورة يمكن أن تكون لها عدة طلاب.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...