Python Django model之字段

模型简介与示例

模型是你的数据的唯一的、明确的信息源。它包含你所储存数据的必要字段和行为。通常,每个模型对应数据库中唯一的一张表。

  • 每个模型都是django.db.models.Model 的一个Python 子类。
  • 模型的每个属性都表示为数据库中的一个字段。
  • Django 提供一套自动生成的用于数据库访问的API;

示例
定义一个Person模型

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

first_name和last_name是模型的两个字段。每个字段都被指定成一个类属性,每个属性映射到一个数据库的列。

上面的Person 模型会在数据库中创建这样一张表:

CREATE TABLE myapp_person (
    "id" serial NOT NULL PRIMARY KEY,
    "first_name" varchar(30) NOT NULL,
    "last_name" varchar(30) NOT NULL
);

注意事项:

  • 这个表的名称myapp_person,是根据 模型中的元数据自动生成的,也可以重写为别的名称。
  • id 字段是自动添加的,但这个行为可以被重写
  • 这个例子中的CREATE TABLE SQL 语句使用PostgreSQL 语法格式,要注意的是Django 会根据设置文件 中指定的数据库类型来使用相应的SQL 语句。

严格意义上来讲, Model 是定义在django.db.models.fields里面,但为了使用方便,它们被导入到 django.db.models中;标准上,我们导入from django.db import models,然后使用 models.Field的形式使用字段。

模型中的字段

对于一个模型来说,最重要的是列出该模型中属性与数据库所对应的字段。字段由models类属性指定。

字段类型

模型中的每个字段都是 Field 子类的某个实例。Django 根据字段类的类型确定以下信息:

数据库当中的列类型 (比如: INTEGER, VARCHAR)。
渲染表单时使用的默认HTML 部件(例如,<input type="text">, <select>)。
最低限度的验证需求,它被用在 Django 管理站点和自动生成的表单中。

Django 自带数十种内置的字段类型;如果内置类型仍不能满足你的要求,你也可以自由地编写符合你要求的字段类型。

  • AutoField(例:id = models.AutoField(primary_key=True))
    一个根据实际ID自动增长的IntegerField . 你通常不需要直接使用;如果不指定,一个主键字段将自动添加到你创建的模型中.详细查看 主键字段.
  • BigIntegerField
    一个64位整数, 类似于一个 IntegerField ,它的值的范围是 -9223372036854775808 到9223372036854775807之间. 这个字段默认的表单组件是一个TextInput.
  • BinaryField
    这是一个用来存储原始二进制码的Field. 只支持bytes 赋值,注意这个Field只有很有限的功能。例如,不大可能在一个BinaryField 值的数据上进行查询
    滥用BinaryField
    尽管你可能想使用数据库来存储你的文件,但是99%的情况下这都是不好的设计。这个字段 不是替代static files 的合理操作.
  • BooleanField
    true/false 字段。
    此字段的默认表单挂件是一个CheckboxInput.
    如果你需要设置null 值,则使用NullBooleanField 来代替BooleanField。
    如果Field.default没有指定的话, BooleanField 的默认值是 None。
  • CharField
    一个用来存储从小到很大各种长度的字符串的地方
    如果是巨大的文本类型, 可以用 TextField.
    这个字段默认的表单样式是 TextInput.
    CharField必须接收一个额外的参数:CharField.max_length
    字段的最大字符长度.max_length将在数据库层和Django表单验证中起作用, 用来限定字段的长度.
    注意
    如果你在写一个需要导出到多个不同数据库后端的应用,你需要注意某些后端对max_l

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django model字段类型有很多,可以根据实际需求选择相应的类型。使用方法如下: 1. 字符串类型(CharField) 用于存储字符串类型的数据,可以指定最大长度。 ```python from django.db import models class Example(models.Model): name = models.CharField(max_length=100) ``` 2. 整数类型(IntegerField) 用于存储整数类型的数据。 ```python from django.db import models class Example(models.Model): age = models.IntegerField() ``` 3. 布尔类型(BooleanField) 用于存储布尔类型的数据。 ```python from django.db import models class Example(models.Model): is_active = models.BooleanField(default=False) ``` 4. 日期类型(DateField) 用于存储日期类型的数据。 ```python from django.db import models class Example(models.Model): date = models.DateField() ``` 5. 时间类型(TimeField) 用于存储时间类型的数据。 ```python from django.db import models class Example(models.Model): time = models.TimeField() ``` 6. 日期时间类型(DateTimeField) 用于存储日期时间类型的数据。 ```python from django.db import models class Example(models.Model): datetime = models.DateTimeField() ``` 7. 浮点数类型(FloatField) 用于存储浮点数类型的数据。 ```python from django.db import models class Example(models.Model): price = models.FloatField() ``` 8. 文本类型(TextField) 用于存储文本类型的数据,可以存储大量文本。 ```python from django.db import models class Example(models.Model): description = models.TextField() ``` 9. 自增类型(AutoField) 用于存储自增类型的数据,一般用于主键。 ```python from django.db import models class Example(models.Model): id = models.AutoField(primary_key=True) ``` 10. 外键类型(ForeignKey) 用于存储外键类型的数据。 ```python from django.db import models class Author(models.Model): name = models.CharField(max_length=100) class Book(models.Model): title = models.CharField(max_length=100) author = models.ForeignKey(Author, on_delete=models.CASCADE) ``` 11. 多对多类型(ManyToManyField) 用于存储多对多类型的数据。 ```python from django.db import models class Author(models.Model): name = models.CharField(max_length=100) class Book(models.Model): title = models.CharField(max_length=100) authors = models.ManyToManyField(Author) ``` 12. 一对一类型(OneToOneField) 用于存储一对一类型的数据。 ```python from django.db import models class Person(models.Model): name = models.CharField(max_length=100) class Passport(models.Model): number = models.CharField(max_length=10) person = models.OneToOneField(Person, on_delete=models.CASCADE) ``` 13. 文件类型(FileField) 用于存储文件类型的数据。 ```python from django.db import models class Example(models.Model): file = models.FileField(upload_to='files/') ``` 14. 图像类型(ImageField) 用于存储图像类型的数据。 ```python from django.db import models class Example(models.Model): image = models.ImageField(upload_to='images/') ``` 以上是Django model字段类型及使用方法,可以根据实际需求选择相应的类型。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值