跳至主要內容

模型_多对多关系映射

刘春龙原创...小于 1 分钟PythonDjango教程文档

定义一个多对多的关联关系,使用 django.db.models.ManyToManyField 类。就和其他 Field 字段类型一样,只需要在你模型中添加一个值为该类的属性

实现

ManyToManyField 类需要任意模型边添加一个位置参数,即你想要关联的模型类名

class SchoolClass(models.Model):
    name = models.CharField(max_length=20)


class Teacher(models.Model):
    name = models.CharField(max_length=10)
    school_class = models.ManyToManyField(SchoolClass)

同步至数据库

python manage.py makemigrations login
python manage.py migrate

这样会给我们生成一个中间表,我们可以自定义这个中间表

自定义中间表

class Person(models.Model):
    '''
    人
    '''
    name = models.CharField(max_length=32)
class Language(models.Model):
    '''
    学习的语言
    '''
    name = models.CharField(max_length=32)
    # 建立多对多管理的使用
    person_language = models.ManyToManyField(Person, through='PersonLanguage')
class PersonLanguage(models.Model):
    '''
    人学了哪门语言
    '''
    person = models.ForeignKey(Person, on_delete=models.CASCADE)
    language = models.ForeignKey(Language, on_delete=models.CASCADE)
    level = models.IntegerField(default=1)

这样,我们把谁谁谁学了什么样的语言关联起来了,同时还记录了所达到的水平

上次编辑于:
贡献者: 刘春龙
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7