前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Django的电子商务网站开发(连载9)

基于Django的电子商务网站开发(连载9)

作者头像
顾翔
修改2023-09-20 18:11:34
4710
修改2023-09-20 18:11:34
举报
文章被收录于专栏:啄木鸟软件测试

3.2 数据Model设计

根据第3.1节的需求,进行数据模型的设计,系统关联(ER)图如图3-1所示。

图3-1 电子商务系统的系统关联图(ER)

在这里建立了五个对象,分别是用户(User)、地址(Address)、商品(Goods)、单个订单(Order)和总订单(Orders)。

(1)一个用户对应多个地址,一个地址对应一个用户,所以【用户,地址】是一对多的关系,需要在地址表中建立包含指向用户表的外键。

(2)一个地址对应多个总订单,一个总订单对应一个地址,所以【地址,总订单】是一对多的关系,需要在总订单表中建立包含指向地址表的外键。

(3)一个用户对应多个订单,一个订单对应一个用户,所以【用户,订单】是一对多的关系,需要在订单表中建立包含指向用户表的外键。

(4)一个商品对应多个单个订单,一个单个订单对应一个商品,所以【商品,单个订单】是一对多的关系,需要在单个订单表中建立包含指向商品的外键。

(5)一个总订单对应多个单个订单,一个单个订单对应一个总订单,所以【总订单,单个订单】是一对多的关系,需要在单个订单表中建立包含指向总订单的外键。

根据上述分析,建立如下model.py文件。

from django.db import models # Create your models here.#用户class User(models.Model): username = models.CharField(max_length=50) #用户名 password = models.CharField(max_length=50) #密码 email = models.EmailField() #Email def __str__(self): return self.username #商品class Goods(models.Model): name = models.CharField(max_length=100) #商品名称 price = models.FloatField() #单价 picture = models.FileField(upload_to = './upload/') #图片 desc = models.TextField() #描述 def __str__(self): return self.name #收货地址class Address(models.Model): user = models.ForeignKey(User) #关联用户id address = models.CharField(max_length=50) #地址 phone = models.CharField(max_length=15) #电话 def __str__(self): return self.address #总订单class Orders(models.Model): address = models.ForeignKey(Address) #关联送货地址id create_time = models.DateTimeField(auto_now=True) #创建时间 status = models.BooleanField() #订单状态 def __str__(self): return self.create_time #单个订单class Order(models.Model): order = models.ForeignKey(Orders) #关联总订单id user = models.ForeignKey(User) #关联用户id goods = models.ForeignKey(Goods) #关联商品id count = models.IntegerField() #数量

Goods表中picture使用的是models.FileField(upload_to ='./upload/'),也可以用ImageField,由于goods是后台管理人员操作的,为了提高上传图片的性能所以没有使用ImageField来管理。upload_to = './upload/'表示图片上传后,放入名为upload的路径,upload路径是与goods平行的。这样需要在urls.py中加入。

...url(r'^static/(?P<path>.*)',static.serve,{'document_root':os.path.join(BASE_DIR,'upload')}),…...

这样通过后台上传的图片文件自动存在BASE_DIR\upload\下面,通过<imagesrc='/upload/...jpg'>来显示相应的图片(注意upload前必须由字符‘/’)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3.2 数据Model设计
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档