from django.db import models
from django.db.models.fields.files import ImageField
from mptt.models import MPTTModel
from mptt.models import TreeForeignKey
from ckeditor.fields import RichTextField
# 省
class Province(models.Model):
province_name=models.CharField(max_length=20,null=True) # 省名称
def __unicode__(self):
return self.province_name
# 市
class City(models.Model):
city_name=models.CharField(max_length=20,null=True) # 城市名称
city_pro_id=models.IntegerField() # 外键 城市所在的省份
def __unicode__(self):
return self.city_name
# 学校表
class School(models.Model):
school_id=models.IntegerField() # 学校编号对应json里值
school_name=models.CharField(max_length=32) #学校名称
school_city_id=models.IntegerField() # 外键 学校所在的城市
school_address=models.CharField(max_length=256) # 学校地址
school_grade=models.CharField(max_length=10,null=True) # 学校等级
def __unicode__(self):
return self.school_name
# 用户表
class Player(models.Model):
player_username=models.CharField(max_length=32,unique=True) # 用户名
player_password=models.CharField(max_length=64) # 密码
player_tel=models.CharField(max_length=128,null=True,blank=True,unique=True) # 电话
player_mail=models.CharField(max_length=128,null=True,blank=True,unique=True) # 邮箱
player_school_id=models.IntegerField(default=1) # 学校
player_photo=ImageField(upload_to="img/useravatar/",default="/media/img/useravatar/default.png") # 头像
create_time=models.DateTimeField(auto_now_add=True) # 注册时间
last_time=models.DateTimeField(null=True,blank=True) # 最后登录时间
invitenum=models.IntegerField(default=0) # 邀请数
bannedstatus=models.IntegerField(default=1) # 是否禁用 0开通 -1禁用
def __unicode__(self):
return self.player_username
# 货品
class Goods(models.Model):
goods_school_id=models.IntegerField() # 外键 校园
goods_author_id=models.IntegerField() # 外键 发布者
goods_title=models.CharField(max_length=32) # 标题
goods_firstphoto=models.ImageField(upload_to="img/goodspic/%Y%m%d/",null=True,blank=True) # 首图
goods_detail=models.CharField(max_length=256) # 详情说明
goods_views=models.PositiveIntegerField(default=0) # 浏览数
goods_collects=models.IntegerField(default=0) # 收藏数
goods_orgprice=models.FloatField(default=0.0) # 原价
goods_price=models.FloatField(default=0.0) # 价格
goods_createtime=models.DateTimeField(null=True,blank=True) # 创建时间
goods_updatetime=models.DateTimeField(null=True,blank=True) # 更新时间
goods_del=models.IntegerField(default=1) # 是否删除 1未删 -1已删
goods_trademethod=models.IntegerField(default=0) # 交易模式 1线上交易 0中介交易 -1线下交易
goods_newold=models.FloatField(default=10) # 新旧程度 10全新 9-0新
limitminute=models.DateTimeField(null=True,blank=True) # 限制分钟
class Meta:
unique_together=("goods_author_id","limitminute")
def changecollects(self,num=1):
self.goods_collects+=num
self.save(update_fields=["goods_collects"])
def __unicode__(self):
return self.goods_title
# 评论
class Comments(MPTTModel):
reply_to=models.ForeignKey(Player,on_delete=models.CASCADE,null=True,blank=True,related_name="replyers") # 关联被回复人
replyname=models.CharField(max_length=32,null=True,blank=True) # 被回复人的姓名
commentuser_id=models.IntegerField(null=True,blank=True) # 评论人id
commentusername=models.CharField(max_length=32,null=True,blank=True) # 评论人姓名
body=RichTextField() # 评论内容
parent=TreeForeignKey("self",on_delete=models.CASCADE,null=True,blank=True,related_name="children",db_index=True) # 树形结构
goods_id=models.IntegerField() # 外键商品id
comment_time=models.DateTimeField(auto_now_add=True) # 评论时间
limittimes=models.DateTimeField(null=True,blank=True) #限制时间
class Meta:
unique_together=("commentuser_id","limittimes")
def __unicode__(self):
return self.content
class MPTTMeta:
order_insertion_by=["comment_time"]
# 收藏货品表
class Collects(models.Model):
collects_goods_id=models.IntegerField() # 外键 货品
collects_time=models.DateTimeField(auto_now_add=True) # 收藏时间
collects_player_id=models.IntegerField() # 外键 收藏者id
class Meta:
unique_together=("collects_goods_id","collects_player_id")
def __unicode__(self):
return self.collects_goods
# 货品图片表
class Goodspic(models.Model):
goods_pic=models.ImageField(upload_to="img/goodspic/%Y%m%d/",null=True,blank=True) # 图片
pic_goods_id=models.IntegerField() # 外键 所属的货品
def __unicode__(self):
return self.goods_pic
# 邀请表
class Invites(models.Model):
beinvite_name_id=models.IntegerField()# 关联被邀请者id
invite_name_id=models.IntegerField() # 关联邀请者id
invite_time=models.DateTimeField(auto_now_add=True) # 邀请时间
invite_status=models.IntegerField(default=-1) # 邀请状态 -1未激活 1激活 登录才算激活
invite_jf=models.IntegerField(default=0) # 获得积分 默认为0
def __unicode__(self):
return self.beinvite_name
# 签到表
class Signin(models.Model):
signtime=models.DateTimeField(null=True,blank=True) # 签到时间
signip=models.CharField(max_length=32,null=True,blank=True) # 签到ip
signstatus=models.IntegerField(default=-1) # 签到状态 -1未签到 1签到
sign_jf=models.IntegerField(default=0) # 签到获得积分 默认为0
sign_player_id=models.IntegerField() # 用户id
sign_date=models.DateTimeField(null=True,blank=True) # 签到日期
class Meta:
unique_together=("sign_player_id","sign_date")
def __unicode__(self):
return self.signtime
# 提现表
class Withdraw(models.Model):
txjb=models.FloatField() # 提现金币
txfee=models.IntegerField() # 提现手续费
txapplicationtime=models.DateTimeField(auto_now_add=True) # 提现申请时间
txreceptiontime=models.DateTimeField(null=True,blank=True) # 提现受理时间
txstatus=models.IntegerField(default=-1) # 受理状态 -1未受理 1已受理
def __unicode__(self):
return self.txjb
# 账户明细类型
class Adtype(models.Model):
typename=models.CharField(max_length=32) # 账户明细类型 1充值豆币 2兑换豆点 3签到奖励 4邀请奖励 5发布商品 6更新商品 7提现 8提现手续费 9新用户
def __unicode__(self):
return self.typename
# 账户明细表
class Accountdetail(models.Model):
detailtype_id=models.IntegerField() # 外键 所属类型id
adplayer_id=models.IntegerField() # 关联用户id
detailtime=models.DateTimeField(auto_now_add=True) # 时间
changejf=models.IntegerField(default=0) # 变动积分
currentjf=models.IntegerField(default=0) # 当前积分
changejb=models.IntegerField(default=0) # 变动金币
currentjb=models.IntegerField(default=0) # 当前金币
detailremark=models.CharField(max_length=32) # 明细备注
def __unicode__(self):
return self.detailtype
# 意见反馈表
class FeedBack(models.Model):
feedbackcontent=models.CharField(max_length=256) # 意见反馈内容
feedbackauth_id=models.IntegerField() # 外键 所属的用户id
feedbacktime=models.DateTimeField(auto_now_add=True) # 时间
limittime=models.DateTimeField(null=True,blank=True) # 限制时间
class Meta:
unique_together=("feedbackauth_id","feedbackcontent","limittime")
def __unicode__(self):
return self.feedbackcontent
#投诉
class Report(models.Model):
reportcontent=models.CharField(max_length=256) # 投诉内容
reportauth_id=models.IntegerField() # 投诉者id
bereportgoods_id=models.IntegerField() # 被投诉商品id
reporttime=models.DateTimeField(null=True,blank=True) # 投诉时间
class Meta:
unique_together=("reportauth_id","bereportgoods_id")
def __unicode__(self):
return self.reportcontent
# 管理员表
class Boss(models.Model):
bossname=models.CharField(max_length=64)
bosspsw=models.CharField(max_length=64)
def __unicode__(self):
return self.bossname
========================================
from django.contrib import admin
from app import models
# Register your models here.
admin.site.register(models.School)
admin.site.register(models.Player)
admin.site.register(models.Goods)