Django项目之模型

news2024/12/23 17:21:13

Django项目之模型

    • 创建环境
    • 配置连接MySQL数据库
    • 创建表单
    • 注册模型
    • Django模型类查询
    • 模型类的条件查询
    • 聚合函数

创建环境

创建Django项目,创建usersapp,并在setting.py中注册

  • 项目工作目录
    在这里插入图片描述

配置连接MySQL数据库

  • 修改/Djweb/Djweb/setting.py中DATABASE设置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'Djweb',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': 'localhost',
        'PORT': 3306
    }
}

并创建数据库

create database Djweb charset=utf8;

安装MySQL数据库依赖

>>pip install mysqlclient
Collecting mysqlclient
  Downloading mysqlclient-2.2.0-cp310-cp310-win_amd64.whl (199 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 199.9/199.9 kB 168.6 kB/s eta 0:00:00
Installing collected packages: mysqlclient
Successfully installed mysqlclient-2.2.0

创建表单

/Djweb/news/models.py

from django.db import models

# Create your models here.
"""
新闻类型表:
    news_type表:
        id:主键
        name:类型名称
新闻信息表:
     news_info表:
        id:主键
        title:标题
        content:内容
        read:阅读数据
        comment:评论数量
数据表之间的关系:
    一对一:OneToOneField、一对一,将字段定义在任意一端中
    一对多:ForeignKey、一对多,将字段定义在多的一端中
    多对多:ManyToManyField、多对多,将字段定义在任意一端中。
"""


class NewsType(models.Model):
    name = models.CharField(max_length=30, verbose_name='新闻类型', help_text='名称')


class NewsInfo(models.Model):
    title = models.CharField(max_length=100, verbose_name='标题', help_text='标题')
    content = models.TextField(max_length=100, verbose_name='内容', help_text='内容')
    read = models.IntegerField(verbose_name='阅读量', help_text='阅读量')
    comment = models.IntegerField(verbose_name='评论量', help_text='评论量')

    type = models.ManyToManyField('NewsType', verbose_name='新闻类型', help_text='新闻类型')

进行迁移

python manage.py makemigrations
Migrations for 'news':
  news\migrations\0001_initial.py
    - Create model NewsType
    - Create model NewsInfo

生成到数据库表单

python manage.py migrate

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, news, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying news.0001_initial... OK
  Applying sessions.0001_initial... OK

此时数据库显示
在这里插入图片描述

  • 自定义显示数据库表名
    /Djweb/news/models.py
class NewsType(models.Model):
    name = models.CharField(max_length=30, verbose_name='新闻类型', help_text='名称')

    class Meta:
        # 指定生成的表名
        db_table = 'type'
        # 说明信息,再Django后台显示
        verbose_name = '类型'

class NewsInfo(models.Model):
    title = models.CharField(max_length=100, verbose_name='标题', help_text='标题')
    content = models.TextField(max_length=100, verbose_name='内容', help_text='内容')
    read = models.IntegerField(verbose_name='阅读量', help_text='阅读量')
    comment = models.IntegerField(verbose_name='评论量', help_text='评论量')

    type = models.ManyToManyField('NewsType', verbose_name='新闻类型', help_text='新闻类型')
    class Meta:
        # 指定生成的表名
        db_table = 'news'
        # 说明信息,再Django后台显示
        verbose_name = '新闻'

重新生成迁移文件,并生成数据库表
在这里插入图片描述

注册模型

  • /Djweb/news/admin.py
from django.contrib import admin
from .models import NewsInfo,NewsType
# Register your models here.
class NewsTypeAdmin(admin.ModelAdmin):
    list_display = ['id', 'name']

class NewsInfoAdmin(admin.ModelAdmin):
    list_display = ['id', 'title','content','read','comment']

admin.site.register(NewsInfo,NewsInfoAdmin)
admin.site.register(NewsType,NewsTypeAdmin)
  • 在命令行注册admin管理员账号
python manage.py createsuperuser

访问网站admin后台
在这里插入图片描述

  • 在类型页面与新闻页面构造测试数据
    在这里插入图片描述
  • 修改显示数据
    在这里插入图片描述
    在这里插入图片描述
    增加 str 方法
class NewsType(models.Model):
    name = models.CharField(max_length=30, verbose_name='新闻类型', help_text='名称')

    class Meta:
        # 指定生成的表名
        db_table = 'type'
        # 说明信息,再Django后台显示
        verbose_name = '类型'
    def __str__(self):
        return self.name

Django模型类查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

模型类的条件查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

聚合函数

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/783473.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

netty知识集锦2

粘包半包 粘包半包解决方案, 1短链接,它的消息边界是从链接建立到链接断开 2.定长解码器:服务器端选最大长度的消息作为定长,客户端不足补齐,缺点造成浪费 netty协议设计与解析 Message编码解码

[DASCTF 2023 0X401七月暑期挑战赛] REV1 controlflow复现

这东西没怎么研究过,不过很多人都完成了,不过这种比赛有很多应该是拿的别人的wp,所以减去些水份,赛后拿到一个wp是人c程序实现的。然后根据原代码还原一下加密流程。 首先是main 这里比较特殊,一开始的3个变量明显是加…

VS2010打开VC6工程进行调试时的问题解决方法

VS2010打开VC6工程进行调试时的问题解决方法 在工程属性页,“配置属性—链接器—输入—忽略特定默认库” 中添加编译时提示无法找到的几个lib库,如下图所示

【iOS】App仿写--管理系统

文章目录 前言一、账号界面二、功能界面三、添加功能四、删除功能五、更改功能六、查找功能七、排序功能八、退出功能总结 前言 在日常生活中,如果用文字来记述与管理我们数据会十分麻烦,并且人工成本较高,这里笔者给出一种管理系统的模版&a…

DSP开发软件css(10)使用基础(汉化、工程导入、设置目标配置文件、选择仿真器和芯片型号、添加文件|库路径、编译下载等操作)

DSP开发软件css(10)使用基础(汉化、工程导入、设置目标配置文件、选择仿真器和芯片型号、添加文件|库路径、编译下载等操作) 文章目录 DSP开发软件css(10)使用基础(汉化、工程导入、设置目标配置文件、选择仿真器和芯片型号、添加文件|库路径、编译下载等操作&#…

中医-十二经-图

🌼十二经-图 🍔十二经🍭任脉、督脉🥗冲脉、带脉🥪阴维、阳维🍨资源下载 🍔十二经 🍭任脉、督脉 🥗冲脉、带脉 🥪阴维、阳维 🍨资源下载 如果需要…

SESSION,TOKEN和Postman的使用

SESSION:它是存储在服务端的 1、客户端输入账户和密码,登录成功,在服务端生成一个SESSIONID同时存储在服务端(DB or Redis) 2、服务端把生成的SESSIONID通过响应头中的Set-Cookie返回给客户端 3、再系统下个请求中&…

机器视觉运动控制快组态软件RTFuse在XYZ三轴运动平台的应用方案

一、RTFuse市场应用背景 面对工业自动化领域对视觉运动控制低代码、低门槛的市场应用需求日益增加,正运动特此推荐一款RTFuse快组态软件,以满足这一需求,使机器视觉运动控制项目开发变得更加简单易用。 RTFuse快组态软件,内置的…

GnuWin32,Windows下使用Linux命令

1. 前言 昨天我写了一篇 UnxUtils工具包,Windows下使用Linux命令 的文章,今天无意间又发现了 GnuWin32 ,它提供Win32版本的GNU工具(Linux下的命令基本都有)。 你可以在 GnuWin32 Files 手动下载你想要的命令安装包。 …

centos7 访问windows系统的共享文件夹

window系统上共享文件夹 选择共享文件夹,点击属性 点击共享 选择用户,点击共享 centos系统挂载共享文件夹 创建挂载目的文件夹 mkdir -p /mnt/smb 挂载命令 mount -t cifs -o usernamezenglg,password*** //192.168.1.10/ftp /mnt/smb/其中&#xff…

新星计划打卡学习:VUE3组合式API

目录 1、vue3组件页面的构成 2、setup选项 3、reactive 4、ref 最后 1、vue3组件页面的构成 从上到下依次是 逻辑、结构、样式 2、setup选项 经过语法糖的封装更简单的使用组合式api <script setup> // 经过语法糖的封装更简单的使用组合式api const message t…

SpringCloudAlibaba微服务实战系列(三)Sentinel1.8.0+流控

SpringCloudAlibaba–Sentinel Sentinel被称为分布式系统的流量防卫兵&#xff0c;是阿里开源流量框架&#xff0c;从服务限流、降级、熔断等多个纬度保护服务。Sentinel同时提供了简洁易用的控制台&#xff0c;可以看到接入应用的秒级数据&#xff0c;并可以在控制台设置一些…

Cookie 和 Session 区别——2023最新面试精简版本

Cookie 和 Session 的区别 原理&#xff1a;从”登录“过程看Jwt和Token&#xff0c;以及区分Cookie和Session概念 面试&#xff1a; 好的&#xff0c;面试官。 我先解释一下 Cookie&#xff0c;它是客户端浏览器用来保存服务端数据的一种机制。 当通过浏览器进行网页访问的时…

Redis原理篇(一)

一、原理篇-Redis数据结构 1.1 Redis数据结构-动态字符串 我们都知道Redis中保存的Key是字符串&#xff0c;value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。 Redis虽由C语言开发&#xff0c;不过Redis没有直接使用C语言中的字符串&#xff0…

vulnhub靶机Thales:1

Thales:1 靶机地址&#xff1a;Thales: 1 ~ VulnHub 主机发现 arp-scan -l 扫描端口 nmap --min-rate 10000 -p- 192.168.21.135 nmap -sV -sT -O -p22,8080 192.168.21.135 简单的漏洞的扫描 nmap --scriptvuln -p22,8080 192.168.21.135 答题思路就是从8080端口拿到账号密…

MS VC 2022开发Linux应用记录之01篇

安装MSVS2022的时候勾上对开发Linux C程序的选项在Windows中安装Oracle Virtual Box程序&#xff0c;在里面安装Ubuntu最新稳定版,要选择多个CPU核在VirtualBox中添加一个网卡,选择Host Only在虚拟机中使用ifconfig命令&#xff0c;在宿主机中使用ipconfig, 可以看到两者存在同…

有限状态自动机

1 什么是有限状态自动机 1.1什么是计算 维基百科定义&#xff1a;计算&#xff08;英语&#xff1a;Calculation&#xff09;是一种将“单一或多个的输入值”转换为“单一或多个的结果”的一种思考过程。可以简单理解为给出一个问题得到一个答案的过程。如下图所示日常生活比…

AITO问界,先经沧海而后造船

IT领域最重要的原则之一&#xff0c;就是软件快速迭代。 对于科技产品来说&#xff0c;需求永远在升级。一项技术或软件系统问世之后&#xff0c;如果后续不再迭代&#xff0c;结果可能是灾难性的。 比如几年前&#xff0c;很多读者可能都买过一些“不了了之”的智能消费硬件&a…

性能测试Ⅳ

在进行性能测试的时候需要使用不同阶段的数据来测试&#xff0c;分析不同数据下资源的情况。 java -jar -Xms1M -Xmx1M -XX:MaxMetaspaceSize10m DBPlus-0.0.1-SNAPSHOT.jar 最小内存 最大内存 如果内存太小会导致内存泄露 启动程序 java -Djava.rmi.serv…

JavaWeb课程设计项目实战(09)——项目编码实践6

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 在本节教程中&#xff0c;我们实现修改学生的功能。当在学生列表页面点击修改后首先将依据id查询该生的详细信息&#xff0c;然后将这些信息展示在修改页面。当完成学生信息…