模型

内容来自django-book2

添加模块的字符串表现

直接打印模型,显示的信息并没有我们需要的提示信息。

[<Publisher: Publisher object>, <Publisher: Publisher object>]

我们可以通过简单的方法来解决这个问题,只需要给Model对象添加一个方法__unicode__()__unicode__()方法告诉Python如何将对象以unicode的方式显示出来。如:

class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_lenght=50)

    def __unicode__(self):
        return '描述字符串'

__unicode__()方法可以进行任何处理来返回一个对象的字符串表示。对__unicode__()的唯一要求就是它返回一个unicode对象。如果__unicode__()方法未返回一个unicode对象,比如返回一个整型的数字,并抛出一个TypeError错误,并提示:”coercing to Unicode:need string or buffer,int found”。

什么是Unicode对象呢?
unicode对象可以理解为就是一个Python的字符串,它可以处理上百万种不同类别的字符。
普通的Python字符串是经过编码的,意思就是他们使用了某种编码方式(如ASCII或UTF-8)来编码。如果把奇特的字符(其他任何超出标准128个如0-9和A-Z之类的ASCII字符)保存在一个Python字符串里。

创建一个,定义第一个模型

在通过startapp建立一个新的app之后,打开对应的app名字下的文件中models.py文件。

from django.db import models

class Publisher(models.Model):
    name = models.CharField(max_length=30)#max_length,字符长度为30
    address = models.CharField(max_length=50)
    website = models.URLFiedl()

每个数据模型都是django.db.models.Model的子类。它的父类Model包含了所有必要的和数据库交互的方法,并提供了一个简洁漂亮的定义数据库字段的语法。
每个模型相当于单个数据库表,每个数据属性也是这个表中的一个字段。属性名就是字段名,它的类型(例如CharField相当于数据库的字段类型(例如varchar))。例如,Publisher模块等同于下面这张表。

CREATE TABLE "books_publisher" (
    "id" serial NOT NULL PRIMARY KEY,
    "name" varchar(30) NOT NULL,
    "address" varchar(50) NOT NULL,
    "website" varchar(200) NOT NULL
);

事实上,正如过一会儿我们所要展示的。Django可以自动生成这些CREATE TABLE语句。
“每个数据库表对应一个类”这条规则的例外情况是多对多关系。例如,Books和Authors,就是一个可以是多对多模型一个Book可以有多个Author,一个Author可以出多本Book。但是Book数据库表并没有Author字段,相反Django创建了一个额外的表(多对多连接表)来处理书籍和作者之间的映射关系。

注意:在上例中,并没有显示地为这些模型定义任何主键。除非单独指明,否则Django会自动为每个模型生成一个自增长的整数主键字段每个Django模型都要求有单独主键

模型安装

完成这些代码

插入和更新数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值