“Goods modeles设计”的版本间的差异
来自CloudWiki
第98行: | 第98行: | ||
'user_operation', | 'user_operation', | ||
]</nowiki> | ]</nowiki> | ||
+ | |||
+ | ==商品表Goods == | ||
+ | |||
+ | goods.model.py: | ||
+ | |||
+ | from DjangoUeditor.models import UEditorField | ||
+ | |||
+ | Goods表:这个表描述商品 | ||
+ | |||
+ | <nowiki>class Goods(models.Model): | ||
+ | """ | ||
+ | 商品 | ||
+ | """ | ||
+ | category = models.ForeignKey(GoodsCategory, verbose_name="商品类目") | ||
+ | goods_sn = models.CharField(max_length=50, default="", verbose_name="商品唯一货号") | ||
+ | name = models.CharField(max_length=100, verbose_name="商品名") | ||
+ | click_num = models.IntegerField(default=0, verbose_name="点击数") | ||
+ | sold_num = models.IntegerField(default=0, verbose_name="商品销售量") | ||
+ | fav_num = models.IntegerField(default=0, verbose_name="收藏数") | ||
+ | goods_num = models.IntegerField(default=0, verbose_name="库存数") | ||
+ | market_price = models.FloatField(default=0, verbose_name="市场价格") | ||
+ | shop_price = models.FloatField(default=0, verbose_name="本店价格") | ||
+ | goods_brief = models.TextField(max_length=500, verbose_name="商品简短描述") | ||
+ | goods_desc = UEditorField(verbose_name=u"内容", imagePath="goods/images/", width=1000, height=300, | ||
+ | filePath="goods/files/", default='') | ||
+ | ship_free = models.BooleanField(default=True, verbose_name="是否承担运费") | ||
+ | goods_front_image = models.ImageField(upload_to="goods/images/", null=True, blank=True, verbose_name="封面图") | ||
+ | is_new = models.BooleanField(default=False, verbose_name="是否新品") | ||
+ | is_hot = models.BooleanField(default=False, verbose_name="是否热销") | ||
+ | add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间") | ||
+ | |||
+ | class Meta: | ||
+ | verbose_name = '商品' | ||
+ | verbose_name_plural = verbose_name | ||
+ | |||
+ | def __str__(self): | ||
+ | return self.name</nowiki> | ||
+ | |||
+ | ==商品轮播图GoodsImage== | ||
+ | |||
+ | 这个表描述商品页面的轮播图: | ||
+ | |||
+ | <nowiki> | ||
+ | class GoodsImage(models.Model): | ||
+ | """ | ||
+ | 商品轮播图 | ||
+ | """ | ||
+ | goods = models.ForeignKey(Goods, verbose_name="商品", related_name="images") | ||
+ | image = models.ImageField(upload_to="", verbose_name="图片", null=True, blank=True) | ||
+ | add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间") | ||
+ | |||
+ | class Meta: | ||
+ | verbose_name = '商品图片' | ||
+ | verbose_name_plural = verbose_name | ||
+ | |||
+ | def __str__(self): | ||
+ | return self.goods.name</nowiki> | ||
+ | |||
+ | ==网站首页轮播的商品Banner== | ||
+ | |||
+ | 这个表描述网站首页轮播的商品: | ||
+ | |||
+ | <nowiki> | ||
+ | class Banner(models.Model): | ||
+ | """ | ||
+ | 轮播的商品 | ||
+ | """ | ||
+ | goods = models.ForeignKey(Goods, verbose_name="商品") | ||
+ | image = models.ImageField(upload_to='banner', verbose_name="轮播图片") | ||
+ | index = models.IntegerField(default=0, verbose_name="轮播顺序") | ||
+ | add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间") | ||
+ | |||
+ | class Meta: | ||
+ | verbose_name = '轮播商品' | ||
+ | verbose_name_plural = verbose_name | ||
+ | |||
+ | def __str__(self): | ||
+ | return self.goods.name</nowiki> |
2020年6月22日 (一) 09:31的版本
目录
商品类别表GoodsCategory
这个表记录商品的所属类别,
一级类名、二级类名都用这个表表示
from datetime import datetime from django.db import models from DjangoUeditor.models import UEditorField # Create your models here. class GoodsCategory(models.Model): """ 商品类别 """ CATEGORY_TYPE = ( (1, "一级类目"), (2, "二级类目"), (3, "三级类目"), ) name = models.CharField(default="", max_length=30, verbose_name="类别名", help_text="类别名") code = models.CharField(default="", max_length=30, verbose_name="类别code", help_text="类别code")#类别英文名 desc = models.TextField(default="", verbose_name="类别描述", help_text="类别描述") category_type = models.IntegerField(choices=CATEGORY_TYPE, verbose_name="类目级别", help_text="类目级别") parent_category = models.ForeignKey("self", null=True, blank=True, verbose_name="父类目级别", help_text="父目录", related_name="sub_cat") is_tab = models.BooleanField(default=False, verbose_name="是否导航", help_text="是否导航") add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间") class Meta: verbose_name = "商品类别" verbose_name_plural = verbose_name def __str__(self): return self.name
商品品类品牌表GoodsCategoryBrand
这个表记录每个品类的代表性品牌
class GoodsCategoryBrand(models.Model): """ 品牌名 """ category = models.ForeignKey(GoodsCategory, related_name='brands', null=True, blank=True, verbose_name="商品类目") name = models.CharField(default="", max_length=30, verbose_name="品牌名", help_text="品牌名") desc = models.TextField(default="", max_length=200, verbose_name="品牌描述", help_text="品牌描述") image = models.ImageField(max_length=200, upload_to="brands/")#maxlength:指定图片最大大小,upload_to指定上传目录 add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间") class Meta: verbose_name = "品牌" verbose_name_plural = verbose_name db_table = "goods_goodsbrand" def __str__(self): return self.name
注:db_table 和verbose_name的区别
- db_table 数据库中别名
- verbose_name django admin 管理界面的别名
引入第三方组件
引入第三方组件DjangoUeditor 放入项目extra_apps中。
[root@localhost mxshop]# cd extra_apps/
[root@localhost extra_apps]# pwd
/root/mxshop/extra_apps
[root@localhost extra_apps]# ls
DjangoUeditor __init__.py
在settings.py中注册一下:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'DjangoUeditor', 'users', 'goods', 'trade', 'user_operation', ]
商品表Goods
goods.model.py:
from DjangoUeditor.models import UEditorField
Goods表:这个表描述商品
class Goods(models.Model): """ 商品 """ category = models.ForeignKey(GoodsCategory, verbose_name="商品类目") goods_sn = models.CharField(max_length=50, default="", verbose_name="商品唯一货号") name = models.CharField(max_length=100, verbose_name="商品名") click_num = models.IntegerField(default=0, verbose_name="点击数") sold_num = models.IntegerField(default=0, verbose_name="商品销售量") fav_num = models.IntegerField(default=0, verbose_name="收藏数") goods_num = models.IntegerField(default=0, verbose_name="库存数") market_price = models.FloatField(default=0, verbose_name="市场价格") shop_price = models.FloatField(default=0, verbose_name="本店价格") goods_brief = models.TextField(max_length=500, verbose_name="商品简短描述") goods_desc = UEditorField(verbose_name=u"内容", imagePath="goods/images/", width=1000, height=300, filePath="goods/files/", default='') ship_free = models.BooleanField(default=True, verbose_name="是否承担运费") goods_front_image = models.ImageField(upload_to="goods/images/", null=True, blank=True, verbose_name="封面图") is_new = models.BooleanField(default=False, verbose_name="是否新品") is_hot = models.BooleanField(default=False, verbose_name="是否热销") add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间") class Meta: verbose_name = '商品' verbose_name_plural = verbose_name def __str__(self): return self.name
商品轮播图GoodsImage
这个表描述商品页面的轮播图:
class GoodsImage(models.Model): """ 商品轮播图 """ goods = models.ForeignKey(Goods, verbose_name="商品", related_name="images") image = models.ImageField(upload_to="", verbose_name="图片", null=True, blank=True) add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间") class Meta: verbose_name = '商品图片' verbose_name_plural = verbose_name def __str__(self): return self.goods.name
网站首页轮播的商品Banner
这个表描述网站首页轮播的商品:
class Banner(models.Model): """ 轮播的商品 """ goods = models.ForeignKey(Goods, verbose_name="商品") image = models.ImageField(upload_to='banner', verbose_name="轮播图片") index = models.IntegerField(default=0, verbose_name="轮播顺序") add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间") class Meta: verbose_name = '轮播商品' verbose_name_plural = verbose_name def __str__(self): return self.goods.name