模型操作
① 在models.py
中建立數據庫模型
class StudentInfo(models.Model):
address = models.CharField(max_length=50, null=True)
phone = models.CharField(max_length=11, null=True)
class Meta:
db_table = 'stu_info'
class Grade(models.Model):
g_name = models.CharField(max_length=100, null=True)
class Meta:
db_table = 'grade'
class Student(models.Model):
s_name = models.CharField(max_length=10, unique=True, null=False)
age = models.IntegerField(default=18)
# 第一次創建數據時,自動默認為當前創建的時間
create_time = models.DateTimeField(auto_now_add=True)
# 修改時自動更新為修改的時間
operate_time = models.DateTimeField(auto_now=True)
is_delete = models.BooleanField(default=0)
chinese = models.DecimalField(max_digits=3, decimal_places=1,null=True)
math = models.DecimalField(max_digits=3, decimal_places=1,null=True)
# 一對一字段,一個學生對應一條學生信息
stuinfo = models.OneToOneField(StudentInfo, related_name='stu', on_delete=models.CASCADE, null=True)
# 多對多字段,
grade = models.ForeignKey(Grade,related_name='stu',on_delete=models.CASCADE, null=True)
class Meta:
db_table = 'student'
在views.py
中通過學生信息表查找學生信息
def sel_stu_by_info(request):
if request.method == 'GET':
stuinfo = StudentInfo.objects.filter(phone = '123456').first()
# 通過django自帶的OneToOneField即可通過related_name自動創建外鍵關系
stu = stuinfo.stu
return HttpResponse('查詢成功')
def add_grade(request):
if request.method == 'GET':
names = ['python班級', 'Java班級', 'Php班級', 'C++班級']
for name in names:
if not Grade.objects.filter(g_name=name).exists():
Grade.objects.create(g_name=name)
# 分配班級
stus = Student.objects.filter(pk__in=[1, 2, 3, 4, 5]).all()
g = Grade.objects.filter(g_name='python班級').first()
for stu in stus:
stu.grade = g
#stu.grade_id = g.id
stu.save()
return HttpResponse('添加班級和學生信息')