案例-客户关系管理系统之增删改查

10、案例-客户关系管理系统之增删改查

一、建立模型

1、导入模型

from django.db import models

2、创建学生表

class Student(models.Model):  # 学生表
    name = models.CharField(max_length=20)
    age = models.SmallIntegerField()
    sex = models.SmallIntegerField(default=1)
    qq = models.CharField(max_length=20, unique=True)
    phone = models.CharField(max_length=20, unique=True)
    c_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
    e_time = models.DateTimeField(verbose_name='修改时间',auto_now=True)
    grade = models.ForeignKey('Grade', on_delete=models.SET_NULL, null=True)
    is_delete = models.BooleanField(default=False)  # 一般实际开发过程中,我们不会直接删除数据,而是给数据加上is_delete字段,来标记数据的状态。

    def __str__(self):
        return '%s-%s-%s' % (self.name, self.age, self.sex)

3、创建学生详情表

class StudentDetail(models.Model):  #学生详情表
    num = models.CharField('身份证', max_length=40, unique=True)
    college = models.CharField('毕业学校', max_length=20, default='')
    student = models.OneToOneField('Student', on_delete=models.CASCADE, related_name='detail')

    def __str__(self):
        return '%s-%s' % (self.num, self.college)

4、创建班级表

class Grade(models.Model):  # 班级表
    name = models.CharField('班级名称', max_length=20)
    num = models.CharField('班期', max_length=20)

    def __str__(self):
        return '%s-%s' % (self.name, self.num)

5、创建课程表

class Course(models.Model):  # 课程表
    name = models.CharField('课程名称', max_length=20)
    student = models.ManyToManyField('Student', through='Enroll')

    def __str__(self):
        return '%s' % self.name

6、创建学生表与课程表的中间表

class Enroll(models.Model):  # 课程与学生多对多中间表
    student = models.ForeignKey('Student', on_delete=models.CASCADE)
    course = models.ForeignKey('Course', on_delete=models.CASCADE)
    pay = models.FloatField('缴费金额', default=0)
    c_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)

    def __str__(self):
        return '%s' % self.pay

二、增删改查功能实现

1、index页面视图函数

from django.shortcuts import render, redirect,reverse
from django.http import HttpResponse
from student.models import Student, Grade, StudentDetail
from django.db.models import Q
from django.core.paginator import Paginator


# Create your views here.


def index(request):
    section = '学生列表'
    search = request.POST.get('search', '').strip()  # 接收从html的form表单传过来的参数
    if search:
        if search.isdigit():  # 如果是数值类型则
            sts = Student.objects.filter(Q(qq=search) | Q(phone=search), is_delete=False)  # 用qq和phone去匹配
        else:  # 如果是字符型
            sts = Student.objects.filter(name=search, is_delete=False)  # 则和名字匹配
    else:  # search都没有匹配到则查询所有学生
        sts = Student.objects.filter(is_delete=False)

    sts
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值