相关文章推荐
安静的豆浆  ·  在SQL ...·  2 周前    · 
神勇威武的蟠桃  ·  R求aitchison ...·  1 年前    · 
玩滑板的绿茶  ·  RuoYi-Cloud 登陆 /code ...·  1 年前    · 
狂野的伏特加  ·  Retiring the ...·  1 年前    · 
一身肌肉的镜子  ·  c - Using the builtin ...·  1 年前    · 

下面的代码定义了Person模型,有first_name和last_name:

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代表模型的field(属性),每一个属性对应到数据表的一个列,上面的模型代码对应的数据表将是如下:

CREATE TABLE myapp_person ( 
    "id" serial NOT NULL PRIMARY KEY, 
    "first_name" varchar(30) NOT NULL, 
    "last_name" varchar(30) NOT NULL 
  • 表名称前缀 myapp 是在配置文件中配置的,可以覆盖
  • id元素是自动添加的,也可以做一些自定义的操作
  • 这里的语句使用的是PostgreSQL语法,在settings.py中配置其它类型的数据库,可以生成对应数据库的语法
  • 当你定义好模型之后,你需要告诉Django你要用这些模型了,通过修改settings.py文件中INSTALLED_APPS部分来添加新的模块名称,包含刚定义的model。

    # Application definition
    INSTALLED_APPS = [
        'myqpp',
    

    添加新的模块之后,不要忘了运行迁移命令是模型生效。

    python manage.py migrage
    

    模型属性(Field)

    Field是模型中最重要的部分,也是必须要有的部分。它定义了 Python 模型与数据表之间的对应关系。

    注意定义属性名称时不要使用有冲突含义的字段名称。如save,clean,delete

    Field Type

    模型的每一个属性都应该是 Field 类的实例,Django使用Field类处理如下事情:

  • 数据表 column 列的类型,Interger,VARCHAR, TEXT
  • 字段验证validate
  • Django预定义了很多Field,这里有一份完整的Field类型参考

    Model field reference