标签:
上篇文章建立了一个空的网站。现在我们要准备正式我们的网站开发咯。那么开发的第一步是啥呢?当然是要确定做什么网站了。每个人的开发习惯可能不尽相同,有点可能是从前端开始设计,有的可能是从数据库开始设计(不得不说django在数据库操作方面是很强大的)。我属于后者,因为我对前端不太熟悉,哈哈!
我要做一个公司内部团体订餐系统,方便统一订餐。功能需求很简单:公司每天要订餐,订餐每天定一家餐馆的菜。
我想到需要建立如下数据库表:餐馆(Restaurant)、商品分类(Category)、商品(good)、消费者(Custom)、消费者评论(Comment )、菜(Menu每个消费者可能有多个菜),订单(Order 每天订单次数基本固定)。具体到每个表的关键字,在后面会看到。
好了分析好了我们需要的数据结构,我们就利用Python-django构建我们的数据库,由于此系统对数据库的要求不高,我们使用默认的sqlite:
1. 首先我们要建立一个app(为啥叫app,待后续分解)。我们建立一个名为polls(名字你随意):python manage.py startapp polls
2. 如果执行成功,会再工程目录下生成一个polls目录。
3. 设计数据库结构及映射关系:django采用ORM(对象关系映射)来创建数据库。你要建立的数据库,需要修改polls app目录下的models.py 文件。在此文件中添加对象及对象之间的映射关系,以下为我的修改,添加了之前说明的数据库表:
1 from django.db import models 2 3 # Create your models here. 4 5 class Restaurant(models.Model): 6 name = models.CharField(max_length=50) 7 URL = models.CharField(max_length=200, default="") 8 9 def __str__(self): 10 return self.name 11 12 class Category(models.Model): 13 name = models.CharField(max_length=50) 14 15 def __str__(self): 16 return self.name 17 18 class Good(models.Model): 19 name = models.CharField(max_length=50) 20 price = models.FloatField() 21 description = models.CharField(max_length=200) 22 category = models.ForeignKey(Category) 23 restaurant = models.ForeignKey(Restaurant) 24 25 def __str__(self): 26 return self.name 27 28 class Custom(models.Model): 29 name = models.CharField(max_length=20) 30 sex = models.BooleanField() 31 age = models.IntegerField() 32 department = models.IntegerField() 33 34 def __str__(self): 35 return self.name 36 37 class CustomComment(models.Model): 38 content = models.CharField(max_length=200) 39 score = models.IntegerField() 40 good = models.ForeignKey(Good) 41 custom = models.ForeignKey(Custom) 42 43 def __str__(self): 44 return self.content 45 46 class Order(models.Model): 47 name = models.CharField(max_length=50, default= "晚餐") 48 date = models.DateTimeField() 49 50 def __str__(self): 51 return self.date 52 53 class Menu(models.Model): 54 order = models.ForeignKey(Order) 55 good = models.ForeignKey(Good) 56 custom = models.ForeignKey(Custom) 57 58 def __str__(self): 59 return self.order 60
4. 将以上数据库表信息及映射关系应用到真实的数据库中:
$python >>> import django >>> django.setup() >>> from polls.models import Restaurant, Category,Good #引入数据对象 >>> Restaurant.objects.all() #查询所有餐馆数据 >>> r = Restaurant("宇宙卷饼","http://waimai.baidu.com/waimai/shop/598777734712241745") >>> r.save() >>> c = Category("热卖") >>> c.save() >>> g = Good("酱香鸡腿肉卷(中份)", 20, "美味", c, r, 0) >>> g.save() >>> g.name #查询存储结果 >>> g.category.name >>> g.restaurant.name
好了现在数据库创建完毕,我们也进行了测试
标签:
原文地址:http://www.cnblogs.com/inbase/p/4770317.html