Python全系列 教程
3567个小节阅读:5929.3k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
from django.db import models
class Student(models.Model):
name = models.CharField(max_length=20)
friends = models.ManyToManyField("self")
笔记:
会生成一个中间表,如下
xxxxxxxxxx
CREATE TABLE `test_app_student_friends` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`from_student_id` int(11) NOT NULL,
`to_student_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `test_app_student_friends_from_student_id_to_stude_7ef9880e_uniq` (`from_student_id`,`to_student_id`),
KEY `test_app_student_fri_to_student_id_154a4deb_fk_test_app_` (`to_student_id`),
CONSTRAINT `test_app_student_fri_from_student_id_c400b5d4_fk_test_app_` FOREIGN KEY (`from_student_id`) REFERENCES `test_app_student` (`id`),
CONSTRAINT `test_app_student_fri_to_student_id_154a4deb_fk_test_app_` FOREIGN KEY (`to_student_id`) REFERENCES `test_app_student` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
xxxxxxxxxx
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)
笔记:
会自动生成一个中间表,DDL语句如下:
xxxxxxxxxx
CREATE TABLE `test_app_teacher_school_class` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`teacher_id` int(11) NOT NULL,
`schoolclass_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `test_app_teacher_school__teacher_id_schoolclass_i_f52c7361_uniq` (`teacher_id`,`schoolclass_id`),
KEY `test_app_teacher_sch_schoolclass_id_7ac34d1e_fk_test_app_` (`schoolclass_id`),
CONSTRAINT `test_app_teacher_sch_schoolclass_id_7ac34d1e_fk_test_app_` FOREIGN KEY (`schoolclass_id`) REFERENCES `test_app_schoolclass` (`id`),
CONSTRAINT `test_app_teacher_sch_teacher_id_8c52afbd_fk_test_app_` FOREIGN KEY (`teacher_id`) REFERENCES `test_app_teacher` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
其中:
test_app_teacher_school_class是表名: test_app是应用名, teacher是第一个模型名,school_class是第二个模型名
xxxxxxxxxx
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(
Person,
through='Membership', # 必须是 类名的字符串 ,用 '' 包裹
through_fields=('group', 'person'),
)
class Membership(models.Model):
group = models.ForeignKey(Group, on_delete=models.CASCADE)
person = models.ForeignKey(Person, on_delete=models.CASCADE)
level = models.IntegerField(default=1)
笔记: