django中orm对应mysql的数据类型

一、字段类型对应关系

data_types = {
‘AutoField’: ‘integer AUTO_INCREMENT’,

‘BigAutoField’: ‘bigint AUTO_INCREMENT’,

‘BinaryField’: ‘longblob’,

‘BooleanField’: ‘bool’,

‘CharField’: ‘varchar(%(max_length)s)’,

‘CommaSeparatedIntegerField’: ‘varchar(%(max_length)s)’,

‘DateField’: ‘date’,

‘DateTimeField’: ‘datetime’,

‘DecimalField’: ‘numeric(%(max_digits)s, %(decimal_places)s)’,

‘DurationField’: ‘bigint’,

‘FileField’: ‘varchar(%(max_length)s)’,

‘FilePathField’: ‘varchar(%(max_length)s)’,

‘FloatField’: ‘double precision’,

‘IntegerField’: ‘integer’,

‘BigIntegerField’: ‘bigint’,

‘IPAddressField’: ‘char(15)’,

‘GenericIPAddressField’: ‘char(39)’,

‘NullBooleanField’: ‘bool’,

‘OneToOneField’: ‘integer’,

‘PositiveIntegerField’: ‘integer UNSIGNED’,

‘PositiveSmallIntegerField’: ‘smallint UNSIGNED’,

‘SlugField’: ‘varchar(%(max_length)s)’,

‘SmallIntegerField’: ‘smallint’,

‘TextField’: ‘longtext’,

‘TimeField’: ‘time’,

‘UUIDField’: ‘char(32)’,

字段类型参数

null。可以同blank进行对比。null用于设定在数据库层面是否允许为空
blank。针对业务层面,该值是否允许为空。
choices。配置字段的choices后,在admin页面上就可以看到对应的可选项展示。
db_column。默认情况下,定义的field就是对应数据库中的字段名称,通过这个参数可以指定Model中的某个字段对应数据库中的哪个字段。
db_index。数据库索引配置。
default。默认值配置。
editable。是否可编辑,默认是True。如果不想这个字段显示在页面上,可以配置为False。
error_messages。用来自定义字段值校验失败时的异常提示,它是字典格式。key的值可选项为null、blank、invalid、invalid_choice、unique和unique_for_date。
help_text。字段提示语,配置这一项后,在页面对应字段的下方会展示此配置。
primary_key。主键,一个Model只允许设置一个字段为primary_key。
unique。唯一约束,当需要配置唯一值时,设置unique=True,设置此项后,不需要设置db_index。
unique_for_date。针对date(日期)的联合约束。比如说一天只能写一篇博文,即:unique_for_date=“博文”
unique_for_month。针对月份的联合约束 。
unique_for_month。针对年份的联合约束。
verbose_name。字段对应的展示文案。
validators。自定义校验逻辑,同form类似。

第二部分、参数

上面django所提供的字段都是类。

比如models.CharField的定义就是:class CharField:。

每个字段里面都提供了参数可以选择:null。可以同blank进行对比。null用于设定在数据库层面是否允许为空

blank。针对业务层面,该值是否允许为空。

choices。配置字段的choices后,在admin页面上就可以看到对应的可选项展示。

db_column。默认情况下,定义的field就是对应数据库中的字段名称,通过这个参数可以指定Model中的某个字段对应数据库中的哪个字段。

db_index。数据库索引配置。

default。默认值配置。

editable。是否可编辑,默认是True。如果不想这个字段显示在页面上,可以配置为False。

error_messages。用来自定义字段值校验失败时的异常提示,它是字典格式。key的值可选项为null、blank、invalid、invalid_choice、unique和unique_for_date。

help_text。字段提示语,配置这一项后,在页面对应字段的下方会展示此配置。

primary_key。主键,一个Model只允许设置一个字段为primary_key。

unique。唯一约束,当需要配置唯一值时,设置unique=True,设置此项后,不需要设置db_index。

unique_for_date。针对date(日期)的联合约束。比如说一天只能写一篇博文,即:unique_for_date=“博文”

unique_for_month。针对月份的联合约束 。

unique_for_month。针对年份的联合约束。

verbose_name。字段对应的展示文案。

validators。自定义校验逻辑,同form类似。

关于Django字段类型中 blank和null的区别

blank

设置为True时,字段可以为空。设置为False时,字段是必须填写的。字符型字段CharField和TextField是用空字符串来存储空值的。

如果为True,字段允许为空,默认不允许。

null

设置为True时,django用Null来存储空值。日期型、时间型和数字型字段不接受空字符串。所以设置IntegerField,DateTimeField型字段可以为空时,需要将blank,null均设为True。

如果为True,空值将会被存储为NULL,默认为False。

如果想设置BooleanField为空时可以选用NullBooleanField型字段。

一句话概括null 是针对数据库而言,如果 null=True, 表示数据库的该字段可以为空。

blank 是针对表单的,如果 blank=True,表示你的表单填写该字段的时候可以不填,比如 admin 界面下增加 model 一条记录的时候。直观的看到就是该字段不是粗体

通俗点说,该字段null=true后,你进行插入,修改操作时可以为空,然后Django把空值转换成null存在数据库中,而blank只是在表单验证的时候会检测你是否可以为空

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要从MySQL数据库读取数据,你需要使用DjangoORM(对象关系映射)框架,它可以将数据库表映射为Python类,使得你可以直接在Python操作数据库。 以下是一个示例代码: 1. 首先,在settings.py文件配置数据库连接信息: ``` DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_database_name', 'USER': 'your_database_user', 'PASSWORD': 'your_database_password', 'HOST': 'localhost', 'PORT': '3306', } } ``` 2. 在你的Django应用定义一个模型类,例如: ``` from django.db import models class Book(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=50) price = models.DecimalField(max_digits=6, decimal_places=2) def __str__(self): return self.title ``` 这个模型类对应着一个名为“book”的数据库表,它有三个字段:title,author和price。 3. 在视图函数查询数据并返回结果,例如: ``` from django.shortcuts import render from myapp.models import Book def book_list(request): books = Book.objects.all() return render(request, 'book_list.html', {'books': books}) ``` 这个视图函数会查询所有的图书信息,并将它们传递给名为“book_list.html”的模板文件。 4. 在模板文件展示数据,例如: ``` {% extends "base.html" %} {% block content %} <h1>Book List</h1> <ul> {% for book in books %} <li>{{ book.title }} by {{ book.author }} (${{ book.price }})</li> {% endfor %} </ul> {% endblock %} ``` 这个模板文件会遍历所有图书信息,并将它们展示在一个有序列表。 以上就是从MySQL数据库读取数据的基本流程。你需要熟悉DjangoORM框架以及MySQL数据库的使用方法才能够顺利完成这个任务。 ### 回答2: Django是一个开发网站的Python框架,可以方便地从MySQL数据库读取数据。 首先,需要在Django项目的settings.py设置与MySQL数据库的连接。可以通过定义DATABASES字典的相关参数,如数据库名称、用户名、密码、主机地址以及端口号等。 在Django,使用模型(Model)来与数据库进行交互。可以创建一个继承自django.db.models.Model的类,每个类代表一个表。在类定义字段,代表表的列。字段可以使用Django提供的不同数据类型来容纳不同类型的数据。 在定义完模型后,需要在settings.py的INSTALLED_APPS列表添加应用程序的名称。 接下来,可以使用Django提供的ORM(对象关系映射)来从MySQL数据库读取数据。ORM提供了一种将数据库操作转化为面向对象操作的方式。 可以使用模型的objects属性来代表数据库查询集(QuerySet)。调用objects的all()方法可以查询所有记录,调用filter()方法可以进行筛选。还可以通过调用order_by()方法来对结果进行排序。 在视图函数,可以使用模型的objects属性进行数据库的查询操作。查询结果可以传递给模板,然后在前端进行展示。 可以使用Django提供的模板语言进行数据的呈现和处理。在模板,可以使用模型的字段名来获取对应的数据。 使用DjangoMySQL读取数据的过程就是以上的步骤。通过配置数据库连接、定义模型、进行查询操作,并将结果传递给模板,最终实现在网页展示MySQL数据库的数据。 ### 回答3: Django 是一个基于Python的Web开发框架,它可以方便地与MySQL数据库进行交互,读取其的数据。 首先,我们需要在Django项目的settings.py文件配置数据库连接信息,包括数据库类型mysql),数据库名、用户名、密码、主机等相关信息。配置完成后,Django就可以使用这些信息连接到MySQL数据库。 接下来,我们需要创建Django模型(Model)来定义数据表的结构,每个模型对应一个数据表。在模型,我们可以定义各个字段类型、长度、约束等。Django通过模型来实现对象与数据库表的映射关系,方便我们对数据库的操作。 一旦我们定义了模型,可以使用Django提供的ORM(对象关系映射)功能来进行数据库操作。ORM允许我们使用Python代码来执行对数据库的查询、插入、更新、删除等操作,而无需编写SQL语句。 要从MySQL数据库读取数据,可以通过在视图函数使用模型的查询方法来实现。比如,可以使用模型的all()方法来获取数据表的所有数据,然后将其传递给模板进行展示。 在视图函数,可以使用以下代码从数据库读取数据: ``` from .models import YourModel def your_view(request): data = YourModel.objects.all() return render(request, 'your_template.html', {'data': data}) ``` 以上代码首先导入模型类,然后使用`objects.all()`方法从数据库获取所有数据,并将其存储在`data`变量。最后,将`data`变量传递给模板文件进行展示。 在模板文件(your_template.html),可以通过迭代`data`变量来遍历数据库的数据,比如: ``` {% for item in data %} <p>{{ item.field_name }}</p> {% endfor %} ``` 以上代码会在HTML页面显示数据库每个项的`field_name`字段值。 综上所述,通过配置数据库连接信息、定义模型、使用ORM功能以及在视图函数读取数据,我们可以实现使用DjangoMySQL数据库读取数据的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值