[英]Many to Many relationships in DJANGO with or without a relation table
我是Django的新手。 通常,當存在多對多關系時,我將創建一個單獨的表來保存該關系
有人可以解釋如何在Django中做到這一點
這是我的嘗試:
一個“教學者”可以“教學”許多“模塊”
一個“模塊”可以被許多“教育者”當作“教育者”
class Etudiant(models.Model):
id_etudiant = models.OneToOneField('Utilisateur', models.DO_NOTHING, db_column='id_Utilisateur', primary_key=True)
id_groupe = models.ForeignKey('Groupe', models.DO_NOTHING, db_column='id_Groupe')
class Meta:
db_table = 'Etudiant'
class Module(models.Model):
id_module = models.CharField(db_column='id_Module', primary_key=True, max_length=25)
titre_module = models.CharField(db_column='titre_Module', max_length=25, blank=True, null=True)
uniteenseignement_module = models.CharField(db_column='uniteEnseignement_Module', max_length=25, blank=True, null=True)
finsaisie_module = models.IntegerField(db_column='FinSaisie_Module', blank=True, null=True)
class Meta:
db_table = 'Module'
class Etudier(models.Model):
id_etudiant = models.ForeignKey('Etudiant', models.DO_NOTHING, db_column='id_etudiant')
id_module = models.OneToOneField('Module', models.DO_NOTHING, db_column='id_Module', primary_key=True)
class Meta:
db_table = 'etudier'
unique_together = (('id_module', 'id_etudiant'),)
對於這些情況,Django允許您指定將用於管理多對多關系的模型。 然后,您可以在中間模型上放置額外的字段。 中間模型使用through參數與ManyToManyField關聯,以指向將充當中間模型的模型。 對於我們的音樂家示例,代碼如下所示:
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=128)
def __str__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
def __str__(self):
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person, on_delete=models.CASCADE)
group = models.ForeignKey(Group, on_delete=models.CASCADE)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.