Django框架的学习(二)
一、model类的一些基本使用
这里我讲的例子是创建一个图书类,首先创建某个类,这个类是继承于models模块的Model类
class BookInfo(models.Model):
objects = models.Manager()
btitle = models.CharField(max_length=20)
bpub_date = models.DateField()
# 阅读量
bread = models.IntegerField(default=0)
bcomment = models.IntegerField(default=0)
# 删除选项
isDelete = models.BooleanField(default=False)
设计一个模型类BookInfo,isDelete是作为软删除的标记,目的是防止重要数据丢失,然后生成表。
objects = models.Manager()的使用是因为有些朋友的pycharm无法在后面显示函数快捷导航
接下来我就关联一个英雄类,关联前面图书类。
h_book = models.ForeignKey(‘BookInfo’)表示是外键,关联前面的BookInfo类。
接下来我就关联一个英雄类,关联前面图书类。
h_book = models.ForeignKey(‘BookInfo’)表示是外键,关联前面的BookInfo类。
class Hero(models.Model):
hname = models.CharField(max_length=10)
hcomment = models.CharField(max_length=200)
hgender = models.BooleanField(default=False)
h_book = models.ForeignKey('BookInfo')
这里面是开发文档中文版有详细的字段类型和选项的介绍,宗旨就是需要什么就去文档选取所需要的字段类型,不用所有都背下来。常用的有BooleanField、CharField(指定最大长度,不然会报错)、DateField、IntegerField(可以设置默认值)、ForeignKey
接下来就是轮到生成表,首先通过命令行输入python manage.py makemigrations生成迁移文件,然后生成表 python manage.py migrate 去你的mysql数据库检查一下,就会发现存在这两张表
二、利用model类进行数据交互
首先需要导入你需要修改数据的那个类,from booktest.models import BookInfo进行导入,from之后的路径取决于你的项目管理;创建BookInfo对象
#创建操作
b = BookInfo()
b.btitle = "新图书"
b.bpub_date = date(1997,2,9)
b.save()
#查找操作
res = BookInfo.objects.get(id=bid)
#删除操作
res.delete()
三、后台管理
首先创建管理员,命令 python manage.py createsuperuser;然后按着提示进行基本信息设置;启动服务器,可以通过访问后台管理页面http://127.0.0.1:8000/admin,这个本地访问端口可以启动服务器的时候进行设置。
下一步是需要在admin.py注册模型类
from django.contrib import admin
from booktest.models import BookInfo,Hero
# Register your models here.
class BookInfoAdmin(admin.ModelAdmin):
"""图书模型管理类"""
# 在后台管理的时候显示具体信息
list_display = ['btitle','bpub_date','bread','bcomment','isDelete']
class HeroAdmin(admin.ModelAdmin):
list_display = ['hname','hgender','hcomment','h_book']
admin.site.register(BookInfo,BookInfoAdmin)
admin.site.register(Hero,HeroAdmin)
还有显示书名以及英雄名字,重写__str__的方法。
class BookInfo(models.Model):
objects = models.Manager()
btitle = models.CharField(max_length=20)
bpub_date = models.DateField()
# 阅读量
bread = models.IntegerField(default=0)
bcomment = models.IntegerField(default=0)
# 删除选项
isDelete = models.BooleanField(default=False)
def __str__(self):
return self.btitle
class Hero(models.Model):
hname = models.CharField(max_length=10)
hcomment = models.CharField(max_length=200)
hgender = models.BooleanField(default=False)
h_book = models.ForeignKey('BookInfo')
def __str__(self):
return self.hname