zoukankan      html  css  js  c++  java
  • django之models模块使用

    定义模型

    将数据库表定义成类,集成models.Model

    from django.db import models
    # Create your models here.
    class Author(models.Model):
        name=models.CharField(max_length=100)

    django会自动生成id字段作为主键,如果不定义主键的话

    2,使用模型

    将使用manage.py startapp XXX 创建的应用加入到setting下的INSTALLED_APPS下面,注意它为元组,别忘记后面的逗号

    确保运行命令manage.py migrate,可以事先使用manage.py makemigrations 给应用生成迁移脚本。

    3,字段

    字段类型

    模型中的每一个字段是field子类的实例

    CharField和TextField字段都是最基本的保存文本的字段,其中Charfield是指定固定长度的,另一个是无限长的

    DataField和DatatimeField字段是保存时间的字段

    FileField是保存文件路径的字段

    也可以自己自定义字段类型

    字段选项

    Null,如果为True,则将数据库中空值保存为NULL,默认为False

    Blank,如果为True,则表单的验证允许为空值,默认为False,他是表单输入验证范畴的

    Choice,由二维元组提供一些选项,设置了choice,表单是一个选择框,而不是文本框

    Default,字段的默认值,可以是一个值或者可调用对象

    Help_text,表单部件额外显示的帮助信息

    Primary_key,如果为True,则该字段为主键,如果表中没有设置该值,django自动生成Id字段为主键

    Unique,如果为True,这个数据字段在整个表中都是唯一的

    关系

    Django提供了最常见的三种数据库关系:多对一,多对多,一对一

     多对一关系

    Django使用 django.db.models.ForeignKey 定义多对一关系,和使用其他字段类型一样,在模型中把它作为类的属性包含进来

    class Author(models.Model):
        name=models.CharField(max_length=100)

    class Book(models.Model):
        title=models.CharField(max_length=100)
        author=models.ForeignKey(Author)  #定义了多对一的关系
        length=models.IntegerField()

    若要创建一个递归的关联 —— 对象与自己具有多对一的关系 —— 请使用models.ForeignKey('self')。

    如果你需要关联到一个还没有定义的模型,你可以使用模型的名字而不用模型对象本身:

    from django.db import models
    class Car(models.Model):
        manufacturer = models.ForeignKey('Manufacturer')
    class Manufacturer(models.Model):
        # ...
    Pass

    多对多关系

    ManyToManyField 用来定义多对多关系,用法和其他Field 字段类型一样:在模型中做为一个类属性包含进来。

    在哪个模型中使用ManytoManyField并不重要,在两个模型中任选一个即可,不用两个模型都设置

    class Book(models.Model):
        title=models.CharField(max_length=100)
        author=models.ForeignKey(Author)
        length=models.IntegerField()

    class classify(models.Model):
        name=models.CharField(max_length=100)
        books=models.ManyToManyField(Book) #定义多对多的关系
    也可以按照数据库sql定义多对多关系的形式,在定义另一个模型,对两个模型设置外键
     

    一对一关系

    OneToOneField用来定义一对一关系。 用法和其他字段类型一样:在模型里面做为类属性包含进来。

    class Author(models.Model):
        name=models.CharField(max_length=100)

    class Authorinfo(models.Model):
        phone=models.CharField(max_length=20)
        add=models.CharField(max_length=300)
        sex=models.CharField(choices=sex_choice)
        author=models.OneToOneField(Author)

    模型方法

    可以在模型上定义自定义的方法来给你的对象添加自定义的“底层”功能。Manager 方法用于“表范围”的事务,模型的方法应该着眼于特定的模型实例。

    如def __str__(self) #适用于python3

    Return xxx

    对于python2使用

    Def __unicode__(self)

             Return xxx

    多表集成

    Django的model中提供表之间的集成关系,每一层级下面的models是一个完整的model。在父表中的字段在字表中都有效,只是没有保存在字表中

    具体的用法参考官网

  • 相关阅读:
    Oracle中对多行查询结果进行拼接
    DX使用随笔--NavBarControl
    DX使用随记--其他
    DX使用随记--GroupControl
    DX使用随记--ImageComboBoxEdit
    DX使用随记--TabControl
    Oracle相关
    DX使用随记--GridControl
    一个NPOI导出到excel文件的范例记录
    python数据类
  • 原文地址:https://www.cnblogs.com/hellowcf/p/7453124.html
Copyright © 2011-2022 走看看