我是Django的新手。通常,当有多对多的关系时,我会创建一个单独的表来保持关系
有人可以解释如何在Django中做到这一点
这是我的尝试:
一个' Etudiant'可以' Etudier'很多 模块'
a'模块'可以是' Etudier'许多' Etudiant'
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'),)
答案 0 :(得分:0)
对于这些情况,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)