1、系统总体数据库设计
在设计中会出现循环引用的问题
避免循环引用,采用分层设计,上层可引入下层
2、users model.py编写
因为邮箱验证和轮播图基本是独立的,和其他model无关,把它放在users model下
有关用户的收藏,评论等没有写入users model是因为我们设计了operation app,这些用户相关操作会在operation model中
# _*_ coding:utf-8 _*_
from __future__ import unicode_literals # python自带的包
from datetime import datetime
from django.db import models # 第三方包
from django.contrib.auth.models import AbstractUser
#自定义的包
# Create your models here.
class UserProfile(AbstractUser): # 继承django自带的user
nick_name = models.CharField(max_length=50, verbose_name=u"昵称", default=u"")
birday = models.DateTimeField(verbose_name=u"生日", null=True, blank=True)
gender = models.CharField(max_length=7, choices=(("male", u"男"), ("female", u"女")), default="female" )
address = models.CharField(max_length=100, default=u"")
mobile = models.CharField(max_length=11, null=True, blank=True)
image = models.ImageField(upload_to="image/%Y%m", default=u"image/default.png")
class Meta:
verbose_name = "用户信息"
verbose_name_plural = verbose_name
def __unicode__(self):
return self.username
class EmailVerifyRecord(models.Model):
code = models.CharField(max_length=20, verbose_name=u"验证码")
email = models.EmailField(max_length=50, verbose_name=u"邮箱")
send_type = models.CharField(max_length=10, choices=(("register", "注册"), ("forget", "找回密码")))
send_time = models.DateTimeField(default=datetime.now)
# 不是(default=datetime.now()),去掉括号会根据实例化的时间,不去掉会根据model编译的时间
class Meta:
verbose_name = u"邮箱验证码"
verbose_name_plural = verbose_name
class Banner(models.Model):
title = models.CharField(max_length=100, verbose_name=u"标题")
image = models.ImageField(max_length=100, upload_to="banner/%Y%m", verbose_name=u"轮播图")
url = models.URLField(max_length=200, verbose_name=u"访问地址")
index = models.IntegerField(default=100, verbose_name=u"顺序")
add_time = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")
class Meta:
verbose_name = u"轮播图"
verbose_name_plural = verbose_name
有关包的引入规范顺序:
先写自带的包
其次第三方包
最后自定义的包