Django-模型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django-模型相关的知识,希望对你有一定的参考价值。

模型

模型包含存储的数据行为,字段等。每个模型对应数据库中唯一一张表。

写模型类的时候需要继承models.Model。模型类中的属性是数据库的字段。

Django有一套自己的API进行对数据库的操作。建表定义字段等。

 

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是模型的两个字段。每个字段都被指定成一个类(models)属性,每个属性映射到数据库的一条数据。

person类对应的就是数据库中的一张表。 用元(meta)来对模型类做一些调整。

 

使用模型

模型实现之后,我们需要对setting.py进行配置,告诉Django框架,我们需要使用这些模型。

INSTALLED_APPS = (
    django.contrib.admin,
    django.contrib.auth,
    django.contrib.contenttypes,
    django.contrib.sessions,
    django.contrib.messages,
    django.contrib.staticfiles,
    booktest,  #这是应用名 appname

)

字段

字段是模型中定义数据类型,长度,等属性。模型中的字段都会被指定成一个类属性,每个属性映射到数据库的列。

写个小例子:

from django.db import models

class BookInfo(models.Model):
    #db_column是字段名称,如果没有就使用属性名
    btitle = models.CharField(max_lenght=20, db_column=title)
    bpub_date = models.DateField()
    bread = models.IntegerField (default=0)
    bcomment = models.IntegerFiel(default=0)
    isDelete = models.BooleanField(default=False)#逻辑删除

 

模型元选项

Meta(元)的选择:

使用内部的class Meta定义模型的元数据:

from django.db import models

class Ox(models.Model):
    horn_length = models.IntegerField()
    
    class Meta:
        ordering = ["horn_length"]
        verbose_name_plural = "oxen"

模型元数据是“任何不是字段的数据”, 比如排序选项(ordering),数据库表名(db_table)。个人觉得元(meta)是用来修改模型类的一些特性。

 属性

对象

Model.objects

每个非抽象的Model 类必须给自己添加一个Manager实例。Django 确保在你的模型类中至少有一个默认的Manager

如果你没有添加自己的Manager,Django 将添加一个属性objects,它包含默认的Manager 实例。

如果你添加自己的Manager实例的属性,默认值则不会出现。

from django.db import models

class Person(models.Model):
    # add manager with another name 
    people = models.Manager()

为了对数据库进行查询操作,特意写个类来调用这个Manager实例属性。关于Manager()实例,可以再一个模型里面添加多个。每个实例类中都可以重写你需要的方法(在manager里的方法)。

 

以上是关于Django-模型的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django Summernote 中显示编程片段的代码块?

Django管理图标和图像

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

(Django)气流中的 ORM - 有可能吗?

AJAX相关JS代码片段和部分浏览器模型