Beispiel #1
0
class SPU(db_utils.BaseModel):
    """商品SPU"""
    name = models.CharField(max_length=50, verbose_name='名称')
    brand = db_utils.ForeignKey(Brand,
                                on_delete=models.PROTECT,
                                verbose_name='品牌')
    category1 = db_utils.ForeignKey(GoodsCategory,
                                    on_delete=models.PROTECT,
                                    related_name='cat1_spu',
                                    verbose_name='一级类别')
    category2 = db_utils.ForeignKey(GoodsCategory,
                                    on_delete=models.PROTECT,
                                    related_name='cat2_spu',
                                    verbose_name='二级类别')
    category3 = db_utils.ForeignKey(GoodsCategory,
                                    on_delete=models.PROTECT,
                                    related_name='cat3_spu',
                                    verbose_name='三级类别')
    sales = models.IntegerField(default=0, verbose_name='销量')
    comments = models.IntegerField(default=0, verbose_name='评价数')
    desc_detail = models.TextField(default='', verbose_name='详细介绍')
    desc_pack = models.TextField(default='', verbose_name='包装信息')
    desc_service = models.TextField(default='', verbose_name='售后服务')

    class Meta:
        db_table = 'md_spu'
        verbose_name_plural = verbose_name = '商品SPU'

    def __str__(self):
        return self.name
Beispiel #2
0
class SKU(db_utils.BaseModel):
    """商品SKU"""
    name = models.CharField(max_length=50, verbose_name='名称')
    caption = models.CharField(max_length=100, verbose_name='副标题')
    spu = db_utils.ForeignKey(SPU, on_delete=models.CASCADE, verbose_name='商品')
    category = db_utils.ForeignKey(GoodsCategory,
                                   on_delete=models.PROTECT,
                                   verbose_name='从属类别')
    price = models.DecimalField(max_digits=10,
                                decimal_places=2,
                                verbose_name='单价')
    cost_price = models.DecimalField(max_digits=10,
                                     decimal_places=2,
                                     verbose_name='进价')
    market_price = models.DecimalField(max_digits=10,
                                       decimal_places=2,
                                       verbose_name='市场价')
    stock = models.IntegerField(default=0, verbose_name='库存')
    sales = models.IntegerField(default=0, verbose_name='销量')
    comments = models.IntegerField(default=0, verbose_name='评价数')
    is_launched = models.BooleanField(default=True, verbose_name='是否上架销售')
    default_image = models.ImageField(max_length=200,
                                      default='',
                                      null=True,
                                      blank=True,
                                      verbose_name='默认图片')

    class Meta:
        db_table = 'md_sku'
        verbose_name_plural = verbose_name = '商品SKU'

    def __str__(self):
        return '%s: %s' % (self.id, self.name)
Beispiel #3
0
class GoodsChannel(db_utils.BaseModel):
    """商品频道"""
    group = db_utils.ForeignKey(GoodsChannelGroup, verbose_name='频道组名')
    category = db_utils.ForeignKey(GoodsCategory,
                                   on_delete=models.CASCADE,
                                   verbose_name='顶级商品类别')
    url = models.CharField(max_length=50, verbose_name='频道页面链接')
    sequence = models.IntegerField(verbose_name='组内顺序')

    class Meta:
        db_table = 'md_goods_channel'
        verbose_name_plural = verbose_name = '商品频道'

    def __str__(self):
        return self.category.name
Beispiel #4
0
class OAuthQQUser(db_utils.BaseModel):

    user = db_utils.ForeignKey('users.User',
                               on_delete=models.CASCADE,
                               verbose_name='用户')
    openid = models.CharField('openid', max_length=64, db_index=True)

    class Meta:
        db_table = 'md_oauth_qq'
        verbose_name_plural = verbose_name = 'QQ第三方登录'
Beispiel #5
0
class SKUSpecification(db_utils.BaseModel):
    """SKU具体规格"""
    sku = db_utils.ForeignKey(SKU,
                              related_name='specs',
                              on_delete=models.CASCADE,
                              verbose_name='sku')
    spec = db_utils.ForeignKey(SPUSpecification,
                               on_delete=models.PROTECT,
                               verbose_name='规格名称')
    option = db_utils.ForeignKey(SpecificationOption,
                                 on_delete=models.PROTECT,
                                 verbose_name='规格值')

    class Meta:
        db_table = 'md_sku_specification'
        verbose_name_plural = verbose_name = 'SKU规格'

    def __str__(self):
        return '%s: %s - %s' % (self.sku, self.spec.name, self.option.value)
Beispiel #6
0
class Area(db_utils.BaseModel):
    name = models.CharField('名称', max_length=20)
    parent = db_utils.ForeignKey(
        'self', on_delete=models.SET_NULL, related_name='subs', null=True, blank=True, verbose_name='上级行政区划')

    def __str__(self):
        return self.name

    class Meta:
        db_table = 'md_areas'
        verbose_name = verbose_name_plural = '省市区'
Beispiel #7
0
class GoodsVisitCount(db_utils.BaseModel):
    """统计分类商品访问量模型类"""
    category = db_utils.ForeignKey(GoodsCategory,
                                   on_delete=models.CASCADE,
                                   verbose_name='商品分类')
    count = models.IntegerField(verbose_name='访问量', default=0)
    date = models.DateField(auto_now_add=True, verbose_name='统计日期')

    class Meta:
        db_table = 'md_goods_visit'
        verbose_name = '统计分类商品访问量'
        verbose_name_plural = verbose_name
Beispiel #8
0
class SKUImage(db_utils.BaseModel):
    """SKU图片"""
    sku = db_utils.ForeignKey(SKU,
                              on_delete=models.CASCADE,
                              verbose_name='sku')
    image = models.ImageField(verbose_name='图片')

    class Meta:
        db_table = 'md_sku_image'
        verbose_name_plural = verbose_name = 'SKU图片'

    def __str__(self):
        return '%s %s' % (self.sku.name, self.id)
Beispiel #9
0
class Address(db_utils.BaseModel):
    """用户地址"""
    user = db_utils.ForeignKey(User,
                               on_delete=models.CASCADE,
                               related_name='addresses',
                               verbose_name='用户')
    title = models.CharField(max_length=20, verbose_name='地址名称')
    receiver = models.CharField(max_length=20, verbose_name='收货人')
    province = db_utils.ForeignKey('areas.Area',
                                   on_delete=models.PROTECT,
                                   related_name='province_addresses',
                                   verbose_name='省')
    city = db_utils.ForeignKey('areas.Area',
                               on_delete=models.PROTECT,
                               related_name='city_addresses',
                               verbose_name='市')
    district = db_utils.ForeignKey('areas.Area',
                                   on_delete=models.PROTECT,
                                   related_name='district_addresses',
                                   verbose_name='区')
    place = models.CharField(max_length=50, verbose_name='地址')
    mobile = models.CharField(max_length=11, verbose_name='手机')
    tel = models.CharField(max_length=20,
                           null=True,
                           blank=True,
                           default='',
                           verbose_name='固定电话')
    email = models.CharField(max_length=30,
                             null=True,
                             blank=True,
                             default='',
                             verbose_name='电子邮箱')
    is_deleted = models.BooleanField(default=False, verbose_name='逻辑删除')

    class Meta:
        db_table = 'md_address'
        verbose_name_plural = verbose_name = '用户地址'
        ordering = ['-update_time']
Beispiel #10
0
class SpecificationOption(db_utils.BaseModel):
    """规格选项"""
    spec = db_utils.ForeignKey(SPUSpecification,
                               related_name='options',
                               on_delete=models.CASCADE,
                               verbose_name='规格')
    value = models.CharField(max_length=20, verbose_name='选项值')

    class Meta:
        db_table = 'md_specification_option'
        verbose_name_plural = verbose_name = '规格选项'

    def __str__(self):
        return '%s - %s' % (self.spec, self.value)
Beispiel #11
0
class SPUSpecification(db_utils.BaseModel):
    """商品SPU规格"""
    spu = db_utils.ForeignKey(SPU,
                              on_delete=models.CASCADE,
                              related_name='specs',
                              verbose_name='商品SPU')
    name = models.CharField(max_length=20, verbose_name='规格名称')

    class Meta:
        db_table = 'md_spu_specification'
        verbose_name_plural = verbose_name = '商品SPU规格'

    def __str__(self):
        return '%s: %s' % (self.spu.name, self.name)
Beispiel #12
0
class Content(db_utils.BaseModel):
    """广告内容"""
    category = db_utils.ForeignKey(ContentCategory, on_delete=models.PROTECT, verbose_name='类别')
    title = models.CharField(max_length=100, verbose_name='标题')
    url = models.CharField(max_length=300, verbose_name='内容链接')
    image = models.ImageField(null=True, blank=True, verbose_name='图片')
    text = models.TextField(null=True, blank=True, verbose_name='内容')
    sequence = models.IntegerField(verbose_name='排序')
    status = models.BooleanField(default=True, verbose_name='是否展示')

    class Meta:
        db_table = 'md_content'
        verbose_name_plural = verbose_name = '广告内容'

    def __str__(self):
        return self.category.name + ': ' + self.title
Beispiel #13
0
class GoodsCategory(db_utils.BaseModel):
    """商品类别"""
    name = models.CharField(max_length=10, verbose_name='名称')
    parent = db_utils.ForeignKey('self',
                                 related_name='subs',
                                 null=True,
                                 blank=True,
                                 on_delete=models.CASCADE,
                                 verbose_name='父类别')

    class Meta:
        db_table = 'md_goods_category'
        verbose_name_plural = verbose_name = '商品类别'

    def __str__(self):
        return self.name
Beispiel #14
0
class User(AbstractUser):
    mobile = models.CharField('手机号', max_length=11, unique=True)
    email_active = models.BooleanField('邮箱状态', default=False)
    default_address = db_utils.ForeignKey('Address',
                                          related_name='users',
                                          null=True,
                                          blank=True,
                                          on_delete=models.SET_NULL,
                                          verbose_name='默认地址')

    create_time = models.DateTimeField('创建时间',
                                       auto_now_add=True,
                                       db_index=True,
                                       editable=False)
    update_time = models.DateTimeField('修改时间',
                                       auto_now=True,
                                       db_index=True,
                                       editable=False)

    class Meta:
        db_table = 'md_users'
        verbose_name_plural = verbose_name = '用户表'