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

كيفة عمل علاقة متعدد الى متعدد في Django

Jafar Ali

السؤال

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

كيف يمكنني فعل ذلك و هل يمكن التحكم في جدول علاقه متعدد الى متعدد ؟

النماذج :

class Teacher(models.Model):
    name = models.CharField(max_length=50)
    salary = models.CharField(max_length=50)

class Class(models.Model):
    name = models.CharField(max_length=50)
    capacity = models.CharField(max_length=20)

 

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

Recommended Posts

  • 0

في  Django يمكنك بكل سهولة عمل علاقة متعدد الى متعدد باستخدام  الحقل ManyToManyField ، هذا الحقل من Django يمكنك من إنشاء العلاقة بين نموذج المدرسين و الفصول لديك .

 تجتاج تعريف  النموذج الذي تود عمل العلاقة معه داخل  الحقل ManyToManyField.

مثلًا لديك يمكنك فعل :

class Teacher(models.Model):
    name = models.CharField(max_length=50)
    salary = models.CharField(max_length=50)

class Class(models.Model):
    name = models.CharField(max_length=50)
    capacity = models.CharField(max_length=20)
    teachers = models.ManyToManyField(Teacher) #تعريف علاقة متعدد الى متعدد 

  بهذه الطريقة Django سيقوم تلقائيا بانشاء جدول يقوم بربط بين نموذج المدرس و الفصل.

ولكن اذا كنت تريد تحكم اكبر و إنشاء نموذج اخر بنفسك يكون  هو حلقة الربط يمكنك ذلك بهذا المثال:

class Teacher(models.Model):
    name = models.CharField(max_length=50)
    salary = models.CharField(max_length=50)

class Class(models.Model):
    name = models.CharField(max_length=50)
    capacity = models.CharField(max_length=20) 
    teachers = models.ManyToManyField(Teacher, through='TeacherClasses')

class TeacherClasses(models.Model):
    teacher = models.ForeignKey(Teacher)
    class = models.ForeignKey(Class)
   

في المثال الذي في الاعلى نحن قومنا بإنشاء نموذج TeacherClasses و هو الذي يمثل العلاقة متعدد الى متعدد ، يقوم بتوصيل بين النموذجين Teacher و Class عبر حقل ForeignKey :

class TeacherClasses(models.Model):
    teacher = models.ForeignKey(Teacher)
    class = models.ForeignKey(Class)

ولاستخدام هذا النموذج الخاص بنا في الربط نقوم في نموذج Class باعطاء حقل ManyToManyField المعامل through الذي يخبره ان يستخدم نموذج TeacherClasses في علاقة متعدد  الى متعدد .

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...