from django.shortcuts import HttpResponse, render, redirect
from django.db import models
class Class(models.Model):
id = models.AutoField(primary_key=True)
cname = models.CharField(max_length=32)
cdata = models.DateField()
def __str__(self):
return "%s" % [self.__class__, self.cname]
class Student(models.Model):
id = models.AutoField(primary_key=True)
sname = models.CharField(max_length=32)
# 一对多
# cid = models.ForeignKey(to="Class",to_field="id",related_name="student")
cid = models.ForeignKey(to="Class", to_field="id")
# 一对一
detail = models.OneToOneField("StudentDetail", to_field="id")
# 等同于如下的代码
# detail = models.ForeignKey(to="StudentDetail",to_field="id",unique=True)
def __str__(self):
return "%s" % [self.sname]
# #建立多对多 第一种方法
# class Teacher(models.Model):
# id = models.AutoField(primary_key=True)
# tname = models.CharField(max_length=32)
#
#
# class Teacher2Class(models.Model):m
# id = models.AutoField(primary_key=True)
# tid = models.ForeignKey(to="Teacher",to_field="id")
# cid = models.ForeignKey(to="Class",to_field="id")
#
# class Meta:
# unique_together = ("tid","cid")
# 建立多对多 第二种方法
class Teacher(models.Model):
id = models.AutoField(primary_key=True)
tname = models.CharField(max_length=32)
cid = models.ManyToManyField(to="Class",name="teacher")
# 建立多对多 第3种方法
# class Teacher(models.Model):
# id = models.AutoField(primary_key=True)
# tname = models.CharField(max_length=32)
# cid_tid = models.ManyToManyField(to="Class",
# through="Teacher2Class",
# through_fields=("tid", "cid"))
#
# class Teacher2Class(models.Model):
# id = models.AutoField(primary_key=True)
# tid = models.ForeignKey(to="Teacher", to_field="id")
# cid = models.ForeignKey(to="Class", to_field="id")
#
# class Meta:
# unique_together = ("tid", "cid")
class StudentDetail(models.Model):
id = models.AutoField(primary_key=True)
height = models.PositiveIntegerField()
email = models.EmailField()
memo = models.CharField(max_length=128)
django 表数据多对多
最新推荐文章于 2022-03-03 16:34:44 发布