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

السؤال

نشر

في اطار 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...