- 新建apps
users | goods | operation | trade |
用户 | 商品 | 用户操作 | 交易记录 |
运行
starapp users
- 设计users model
用户信息继承django默认用户表,增加姓名,生日,手机,性别,邮箱,及添加时间
from datetime import datetime # addtime
from django.contrib.auth.models import AbstractUser # 继承user表
name = models.CharField(max_length=30, null=True, blank=True, verbose_name="name")
birthday = models.DateField( null=True, blank=True, verbose_name="birthday")
mobile = models.CharField(max_length=11, verbose_name="mobile_phone")
gender = models.CharField(max_length=6, choices=(("male", "male"), ("female", "female")), default="male", verbose_name="gender")
email = models.EmailField(max_length=100, null=True, blank=True, verbose_name="email")
add_time = models.DateTimeField(default=datetime, verbose_name="add_time")
users model还需要保存用户注册时的验证码,激活时进行验证
class VerifyCode(models.Model):
code = models.CharField(max_length=10, verbose_name="verify_code")
mobile = models.CharField(max_length=11, verbose_name="mobile_phone")
add_time = models.DateTimeField(default=datetime, verbose_name="add_time")
model设计完成后,需在setting.py中注册users,并写入
# 替代系统默认用户表
AUTH_USER_MODEL = 'users.UserProfile'
- Goods model设计
分析发现商品存在三个级别,生鲜,酒水等为第一级别。以生鲜为例,下分肉,水产,蛋类,肉又细分为猪肉,牛肉,羊肉
所以在设计model设计了单独的商品等级类,和商品信息类,商品信息继承商品等级
class GoodsCategory(models.Model):
CATEGORY_TYPE = (
(1, "first_item"),
(2, "second_item"),
(3, "third_item"),
)
name = models.CharField(default="", max_length=30, verbose_name="category_name", help_text="category_name")
code = models.CharField(default="", max_length=30, verbose_name="category_code", help_text="category_code")
desc = models.CharField(default="", verbose_name="category_describe", help_text="category_describe")
category_type = models.CharField(choices=CATEGORY_TYPE, verbose_name="category_level")
parent_category = models.ForeignKey("self", null=True,blank=True, verbose_name="parent_category_level", related_name="sub_cat")
is_tab = models.BooleanField(default=False, verbose_name="tab_in_homepage", help_text="tab_in_homepage")
add_time = models.DateTimeField(default=datetime, verbose_name="add_time")
商品类
class Goods(models.Model):
category = models.ForeignKey(GoodsCategory, null=True, blank=True, verbose_name="goods_catrgory")
goods_sn = models.CharField(max_length=50, default="", verbose_name="goods_sn")
name = models.CharField(max_length=300, verbose_name="goods_name")
click_num = models.IntegerField(default=0, verbose_name="click_num")
sold_num = models.IntegerField(default=0, verbose_name="sold_num")
fav_num = models.IntegerField(default=0, verbose_name="fav_num")
goods_num = models.IntegerField(default=0, verbose_name="goods_num")
market_price = models.FloatField(default=0, verbose_name="market_price")
shop_price = models.FloatField(default=0, verbose_name="market_price")
goods_brief = models.TextField(max_length=500, verbose_name="商品简短描述")
goods_desc = UEditorField(verbose_name=u"desc", imagePath="goods/images/", width=1000, height=300,
filePath="goods/files/", default='')
# 是否有运费
ship_free = models.BooleanField(default=True, verbose_name="ship_fee")
# 产品封面图
goods_front_image = models.ImageField(upload_to="goods/images/", null=True, blank=True, verbose_name="goods_front_image")
# 新品推荐
is_new = models.BooleanField(default=False, verbose_name="new_product")
# 热销推荐
is_hot = models.BooleanField(default=False, verbose_name="nhot_product")
add_time = models.DateTimeField(default=datetime.now, verbose_name="add_time")
品牌类
class GoodCategoryBrand(models.Model):
name = models.CharField(default="", max_length=30, verbose_name="brand_name", help_text="brand_name")
desc = models.CharField(default="", verbose_name="brand_describe", help_text="brand_describe")
image = models.ImageField(max_length=200, upload_to="brand/")
add_time = models.DateTimeField(default=datetime.now, verbose_name="add_time")
商品轮播图
# 商品轮播图
class GoodsImages(models.Model):
goods = models.ForeignKey(Goods, null=True, blank=True, verbose_name="Goods")
image = models.ImageField(upload_to="goods/images/banner", null=True, blank=True, verbose_name="goods_banner_image")
add_time = models.DateTimeField(default=datetime.now, verbose_name="add_time")
首页轮播图
# 首页轮播图
class Banner(models.Model):
goods = models.ForeignKey(Goods, verbose_name="Goods")
image = models.ImageField(upload_to="banner", verbose_name="banner")
index = models.IntegerField(default=0, verbose_name="index")
add_time = models.DateTimeField(default=datetime.now, verbose_name="add_time")