我和Django那些事儿(4)----从最简单的同学录入手之model.py

从最简单的同学录入手

  每次放假回家组织同学聚会的时候都很麻烦,因为电话老换,查着也不方便,虽然qq上有联系人神马的,懒得用它,自己写个同学录吧。

  需求:开始我先做高中的同学的同学录,别的直接先不考虑,记录也很简单,姓名,性别,手机,qq,生日。

  看下MVC的图片,Django的更强调MTV,model,template,view。记得学长还在黑板上画过这个图,当时半模糊,先看看。

  

我和Django那些事儿(4)----从最简单的同学录入手之model.py_第1张图片

  新建了一个AddressBook的项目,app是highschool,我是从model写起的,上代码先。

  

 1 # -*- coding:utf-8 -*-
2 from django.db import models
3
4 class Record(models.Model):
5 SEX_CHOICES = (
6 (u'',u''),
7 (u'',u''),
8 )
9 name = models.CharField(max_length = 40,verbose_name = "姓名")
10 sex = models.CharField(max_length = 2,choices = SEX_CHOICES,verbose_name = "性别")
11 phone = models.CharField(max_length = 30,blank = True,null = True,verbose_name = "电话")
12 qq = models.CharField(max_length = 30,blank = True,null = True,verbose_name = "qq")
13 birth = models.DateField(blank = True,null = True,verbose_name = "生日")
14
15 def __unicode__(self):
16 return u'%s %s' %(self.name,self.phone)
17 class Meta:
18 ordering = ['name']
19 verbose_name = "记录"
20 verbose_name_plural = "记录"

  说明:

    第一行的注释表示可以用中文(比如‘男’、’女‘,’性别’这些字),没有的话Django会报错的。

    第二行导入from django.db import models 一般的model.py 都需要,估计是将Django和数据库链接的,不管他先。

    然后是Record类,Django中,在model里面写的这些类会在数据库中生成相应的表,类后面需要传入参数(models.Model),因为用python 所以千万不要忘记:(冒号)和对齐,要不然就会有 IndentationError(缩进错误)。

      至于models.CharField和models.DateField是Django里面和数据库有关的一些属性,详情https://docs.djangoproject.com/en/1.3/ref/models/fields/

我和Django那些事儿(4)----从最简单的同学录入手之model.py_第2张图片

    

  如果你在站点管理里面添加数据时可以默认某一个域为空值(不是必填),blank = True,null = True,这两个参数加上。

  verbose_name = "姓名",verbose_name是我重点想说的,因为当时找了好久,这个在站点管理里面现实,没有的话默认是英文的一些东西。

我和Django那些事儿(4)----从最简单的同学录入手之model.py_第3张图片

 

  比如name = models.CharField(max_length = 40)#verbose_name = "姓名"(没有这个),默认现实是name而不是姓名,受影响的是下图这里:

 

  第19行的 verbose_name = "记录" ,注意可以看到路径,首页》Highschool这里的记录 

 

 第20行的 verbose_name_plural = "记录",这个是站点管理的根目录Highschool这里的记录

 

我和Django那些事儿(4)----从最简单的同学录入手之model.py_第4张图片

  可以看到,里面还有一些东西是英文的,比如Auth,Highschool,sites,我没有找到用哪个属性可以更改。

  第15行,__unicode__,这个函数是一定要写的,它返回一个对象的描述。怎么说呢,看上图中有个‘我的动作’,里面加号后面就是对象的描述,因为我返回的是return u'%s %s' %(self.name,self.phone),(姓名和电话作为一个字符串,当然数据因为是测试,我是随便敲的,所以才有v不能 fa这种东西)。

  第17行,class Meta:是这个类的一些特殊描述。详情https://docs.djangoproject.com/en/1.3/ref/models/options/

  至于站点管理,下次讲url.py时再说。

你可能感兴趣的:(django)