4-6 django在线教育平台-----users model.py设计

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

有关包的引入规范顺序:
先写自带的包
其次第三方包
最后自定义的包

猜你喜欢

转载自blog.csdn.net/f1ngf1ngy1ng/article/details/80853250
今日推荐