Django开发教程 第五节 模型

首先来创建我们这一节的项目,在终端下执行django-admin startproject django_0050,项目结构如下


一、创建模型

在外层django_0050目录下执行python manage.py startapp student,执行后项目的结构如下


修改models.py内容如下


把student模型添加到项目需要修改settings.py文件如下


更改数据库配置需要修改settings.py文件如下


此时还要在本机MySQL数据库上执行create database django_0050创建一个相应的库。执行python manage.py makemigrations student会看到如下输出


然后执行python manage.py migrate,会看到如下输出


此时在MySQL客户端上查看django_0050库,发现库中多了一个名为student_student的表,用desc查看表的结构如下


为student_student表添加两条如下数据


二、为模型添加视图

为student模型添加视图函数,修改student文件夹下的views.py文件如下


为视图函数添加所需要的html模板,在student文件夹下创建templates文件夹,并在其中创建search_form.html文件,内容如下


创建search_result.html文件,内容如下


为视图添加对应的url


运行开发服务器,访问结果如下



如果查询的名字不在数据库中,则会有如下提示


三、模型数据对象操作方法

# 模型Student
from django.db import models
class Student(models.Model):
    name = models.CharField(max_length = 30)
    age = models.IntegerField()
    def __unicode__(self):
        return self.name
    # 设定用于默认排序的字段
    class Meta:         
        ordering = ['name']

1、创建数据并保存
s = Student(name = "Jack", age = 18)
s.save()

2、获取模型的数据类表
Student.objects.all()

3、数据过滤
Student.objects.filter(name = "Jack", age = 21)
Student.objects.filter(name__contains = "ac") # 查找name包含"ac"的数据,类似的还有startwith、endswith、range

4、获取单个对象
try:
    s = Student.objects.get(name = "Jack")
except Student.MultipleObjectsReturned:
    print "返回多个结果异常"
try:
    s = Student.objects.get(name = "Jack")

except Student.DoesNotExist:
    print "查询没有返回结果异常"

5、数据排序
Student.objects.order_by("name") # 按name排序
Student.objects.order_by("name", "age") # 按name、age排序
Student.objects.order_by("-name") # 按name逆向排序

6、连锁查询
Student.objects.filter(name = "Jack").order_by("-age")

7、限制返回的数据
Student.objects.order_by("name")[0] # 返回第一个数据
Student.objects.order_by("name")[0:2] # 返回特定子集

8、更新多个对象
Student.objects.filter(age = 22).update(name = "Tom")

9、删除数据
Student.objects.filter(name = "Jack").delete()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值