django操作数据库

一、连接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后台管理"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值