一、连接sqlite数据库
复制db.sqlite3路径
文件–>新建连接–>SQLite–>填写db.sqlite3路径
二、怎么定义orm,生成表结构、同步到数据库
1. 定义表类,字段信息
2. 执行命令:
(1)python manage.py makemigrations # 生成表结构(py),不指定子项目名,默认所有子项目都生成这个表结构
(1)python manage.py makemigrations [app_name] # 生成app_name子项目的表结构(py)
(2)python manage.py migrate # 同步到数据库(创建的数据库表名为:app_modelnam:user_category)
3. 更改数据库表名:在数据库类里面再定义一个类,db_table = '新表名'
执行命令:
(1)python manage.py makemigrations # 生成表结构(py)
(2)python manage.py migrate # 同步到数据库
from django.db import models
# Create your models here.
# 分类表,文章表
class Category(models.Model):
# CharField:字段类型为varcher;verbose_name:字段名;max_length:字段最大长度;null:=True默认可以为空,不写--默认不能为空,自动默认不为空;unique:字段值是否可以重复,=True不能重复
name = models.CharField(verbose_name='分类名称',max_length=50,null=True,unique=True)
# DateTimeField:时分秒,auto_now_add=True:自动获取当前时间为创建时间
create_time = models.DateTimeField(verbose_name='创建时间',auto_now_add=True)
# DateField:日期,auto_now什么时候修改的取当前时间
update_tame = models.DateField(verbose_name='更新时间',auto_now=True)
# python manage.py makemigrations # 生成表结构(py)
# python manage.py makemigrations [app_name] # 生成app_name子项目的表结构(py)
# python manage.py migrate # 同步到数据库
# 创建的数据库表名为:app_modelnam--user_category
class Meta:
# python manage.py makemigrations # 生成表结构(py)
# python manage.py migrate # 同步到数据库
db_table = 'category'
三、使用django自带的admin操作,在页面显示建立的数据库表?
admin.py添加如下代码:
admin.site.register(models.Category)
对应页面展示:
四. 展示中文表名
在models.py里写
verbose_name='文章分类'#页面展示表的中文名
verbose_name_plural = verbose_name
五. 显示具体文章分类的名字
在models.py里写
def __str__(self):
return self.name#页面按照分类名称展示
六、django admin怎么配置出来显示多个字段,按照某些字段筛选
from django.contrib import admin
from . import models
# Register your models here.
class CategoryAdmin(admin.ModelAdmin):
list_display = ['id','name','create_time','update_time']#页面展示id,name,create_time,uodate_time
list_filter = ['name']#筛选功能,按name筛选
search_fields = ['name']#搜素功能,按name搜索
admin.site.register(models.Category,CategoryAdmin)
七、如何往数据库里添加数据?
八.在页面显示更多的数据库表信息,list_display
在admin.py里,
页面展示id,name,create_time,uodate_time
九.筛选功能
按name筛选
list_filter = ['name']
十.搜素功能
按name搜索
search_fields = ['name']#搜素功能,按name搜索
十一.orm基本查询
def category_view(request):
# 查询
c = models.Category.objects.all() #查询所有的数据
j = models.Category.objects.get(name="java")#单条数据,必须保证返回的是一条
f = models.Category.objects.filter(name='java',id=3)#查询多条,或多的筛选条件查询
result = models.Category.objects.filter(name="mysql").exists() #是否存在
result2 = models.Category.objects.filter(name="mysql").count()#返回多少条
models.py
from django.db import models
# Create your models here.
class BaseModle(models.Model):
# DateTimeField:时分秒,auto_now_add=True:自动获取当前时间为创建时间
create_time = models.DateTimeField(verbose_name='创建时间',auto_now_add=True)
# DateField:日期,auto_now什么时候修改的取当前时间
update_time = models.DateField(verbose_name='更新时间',auto_now=True)
class Meta:
abstract = True#告诉django BaseModle这个类不需要被创建表
# 分类表,文章表
class Category(BaseModle):
# CharField:字段类型为varcher;verbose_name:字段名;max_length:字段最大长度;null:=True默认可以为空,不写--默认不能为空,自动默认不为空;unique:字段值是否可以重复,=True不能重复
name = models.CharField(verbose_name='分类名称',max_length=50,null=True,unique=True)
# python manage.py makemigrations # 生成表结构(py)
# python manage.py makemigrations [app_name] # 生成app_name子项目的表结构(py)
# python manage.py migrate # 同步到数据库
# 创建的数据库表名为:app_modelnam--user_category
class Meta:
# python manage.py makemigrations # 生成表结构(py)
# python manage.py migrate # 同步到数据库
# 更改页面分类名称
db_table = 'category'#设置数据库表名称
verbose_name='文章分类'
verbose_name_plural = verbose_name
ordering = ['-create_time']#按照创建时间倒序排列
#显示具体文章分类的名字
def __str__(self):
return self.name#页面按照分类名称展示
class Article(BaseModle):
tittle = models.CharField(verbose_name='文章标题',max_length=100)
content = models.TextField(verbose_name='文章内容')#长文本类型,不需要指定长度
read_count = models.IntegerField(verbose_name='阅读次数',default=0)#default:默认值
# create_time = models.DateTimeField(verbose_name='创建时间',auto_now_add=True)
# update_time = models.DateField(verbose_name='更新时间',auto_now=True)
category = models.ForeignKey(Category,on_delete=models.PROTECT,verbose_name='分类')#外键 ,db_constraint=True
#models.DO_NOTHING #什么也不干
#models.CASCADE ,会删除
#models.SET_DEFAULT ,设置一个默认值,1
#models.SET_NULL #设置成空
#models.PROTECT#受保护的,如果还有在使用的,不能让你删除
#models.SET#自定义模式,自己指定
class Meta:
db_table = 'article'
verbose_name = '文章'
verbose_name_plural = verbose_name
ordering = ['-create_time']#按照创建时间倒序排列
def __str__(self):
return self.tittle#页面按照文章包体展示
admin.py
from django.contrib import admin
from . import models
# Register your models here.
#在页面显示更多的数据库表信息,list_display
class CategoryAdmin(admin.ModelAdmin):
list_display = ['id','name','create_time','update_time']#页面展示id,name,create_time,uodate_time
list_filter = ['name']#筛选功能,按name筛选
search_fields = ['name']#搜素功能,按name搜索
admin.site.register(models.Category,CategoryAdmin)
admin.site.register(models.Article)
# 更改页面tittle和header
admin.site.site_title = "sky"
admin.site.site_header = "sky后台管理"