zoukankan      html  css  js  c++  java
  • 7.Django模型类的定义和管理

    Django的模型类是给ORM层服务的

    1.每个数据模型都是django.db.models.Model的子类。

    2.它的父类Model包含了所有必要的和数据库交互的方法,并提供了定义数据库字段的语法。

    3.每个模型相当于一个数据库表(这条规则的例外情况是多对多关系,多对多关系的时候会多生成一张关系表),

    4.每个属性是表中的一个字段。属性名就是字段名,类型就是字段类型

    5.模型之间的三种关系

      一对一(OneToOneField)
      一对多(ForeignKey)
      多对多(ManyToMangField)


    6.把定义的模型放到models.py里,这里就是:hello_djangohellomodels.py文件

    7.语法 

      class MyModel(models.Model):
        name = models.CharField(max_length=30, verbose_name="名称")

        class Meta:
          verbose_name = '中文表明'
          verbose_name_plural = verbose_name

        def __str__(self):
          return self.name

      解释:

        a.通过class定义models名称也就是数据库的表名

        b.需要传入models.Model固定写法

        c.在class的内部,通过name=models.XXXField(params)定义字段

          c.1 models.XXXField常用选项

            BooleanField:布尔类型

            CharField:字符串varchar

            DateField:日期

            DateTimeField:时间戳

            DecimalField:带小数的数

          c.2 params常用选项:

            null(null=True|False)数据库字段的是否可以为空

            blank(blank=True|False)字段是否为空,表单验证

            default 字段默认值

            help_text 字段解释

            primary_key 主键,一般不用显示定义,框架自动生成个id

            unique 是否唯一,对数据库而言

            verbose_name 字段详细名称,通常写自己的中文含义

          c.3 详见:https://docs.djangoproject.com/en/1.9/ref/models/fields

        d.通过内部类class Meta定义一些扩展属性

          d.1例如:

            class Meta:
              verbose_name = '中文表明'
              verbose_name_plural = verbose_name

          d.2详见:https://docs.djangoproject.com/en/1.9/ref/models/options/

        e.可以通过def定义内部的函数或者重写他的函数,可以提供具体的逻辑

          e.1示例:定义__str__()让对象有个默认的名字(属于重写他的方法)

            备注:python2里用__unicode__(),python3里是__str__()

    7.通过manage.py生成数据库表

      manage.py makemigrations  (创建脚本)

      manage.py migrate  (执行脚本)

    8.在hello_djangohelloadmin.py加入管理后,可在admin界面管理,代码如下

      from django.contrib import admin

      from hello.models import *

      # Register your models here.
      admin.site.register(Author)

  • 相关阅读:
    【转】Uiautomator Api浅析
    【转】UiAutomator简要介绍
    后台自动启动appium
    adb通过wifi连接Android设备
    Python字符串处理和输入输出
    OJ题目输出的生成
    Weka的使用和二次开发(朴素贝叶斯及其属性选择)
    PointNet++论文理解和代码分析
    VGG-16复现
    二维偏序-最长上升子序列的两种求解方式
  • 原文地址:https://www.cnblogs.com/413xiaol/p/6501804.html
Copyright © 2011-2022 走看看