怀抱观古今,寝食展戏谑。这篇文章主要讲述Django打造在线教育平台_day_2:新建users app 编写models之完善相关的知识,希望能为你提供帮助。
1、避免循环引用:A引用B,B引用A
文章图片
解决这种问题的方法就是app分层,前面我们设计了4个app,现在把与用户操作相关的放在operation models.py中就可以解决问题:
文章图片
文章图片
2、邮箱验证码的models和banner轮播图的models都放在users/models.py文件中(因为与另外几个关系不大)
"""import规范: 第一部分为python自带模块 第二部分为第三方倒入模块 第三部分为自定义模块 """ from datetime import datetimefrom django.db import models class EmailVerifyRecord(models.Model): """邮箱验证码models""" code = models.CharField(max_length=20, verbose_name=u\'验证码\') email = models.EmailField(max_length=50, verbose_name=u\'邮箱\')# 邮箱验证码有两种类型:注册和找回忘记的密码 send_type = models.CharField(choices=((\'register\', u\'注册\'),(\'forget\',u\'找回密码\')), max_length=10)# 验证码发送时间 # 这里注意now后面不能加(),加了时间就是类编译的时间,不加就是实例化的时间,这里是需要实例化时间 send_time = models.DateTimeField(default=datetime.now)class Meta: verbose_name = u\'邮箱验证码\' verbose_name_plural = verbose_nameclass Banner(models.Model): """轮播图models""" title = models.CharField(max_length=100, verbose_name=u\'标题\') image = models.ImageField(upload_to=\'banner/%Y/%m\', verbose_name=u\'轮播图\', max_length=100) 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
users/models.py全代码,如下
"""import规范: 第一部分为python自带模块 第二部分为第三方倒入模块 第三部分为自定义模块 """ from datetime import datetimefrom django.db import models# AbstractUser包含的Django默认生成的user字段 from django.contrib.auth.models import AbstractUser # Create your models here.class UserProfile(AbstractUser): """继承AbstractUser类,自字义新类添加数据库字段""" # default=\'\'默认为空 nick_name = models.CharField(max_length=50, verbose_name=u\'昵称\', default=\'\') # null=True, blank=True允许用户不填写 birday = models.DateField(verbose_name=u\'生日\', null=True, blank=True)# choices属性, 提供被选数据,这里性别只有男和女 gender = models.CharField(max_length=5, choices=((\'male\',u\'男\'), (\'female\', u\'女\')), default=\'female\', verbose_name=u\'性别\') #性别 address = models.CharField(max_length=100, default=u\'\', verbose_name=u\'地址\') mobile = models.CharField(max_length=11, null=True, blank=True, verbose_name=u\'手机号\') # upload_to指定头像上传文件夹 image = models.ImageField(upload_to=\'image/%Y/%m\', default=u\'image/default.png\', verbose_name=u\'头像\',max_length=100)class Meta: verbose_name = r\'用户信息\' verbose_name_plural = verbose_namedef __unicode__(self): """重载函数,使自定义字符串能打印""" return self.usernameclass EmailVerifyRecord(models.Model): """邮箱验证码models""" code = models.CharField(max_length=20, verbose_name=u\'验证码\') email = models.EmailField(max_length=50, verbose_name=u\'邮箱\')# 邮箱验证码有两种类型:注册和找回忘记的密码 send_type = models.CharField(choices=((\'register\', u\'注册\'),(\'forget\',u\'找回密码\')), max_length=10)# 验证码发送时间 # 这里注意now后面不能加(),加了时间就是类编译的时间,不加就是实例化的时间,这里是需要实例化时间 send_time = models.DateTimeField(default=datetime.now)class Meta: verbose_name = u\'邮箱验证码\' verbose_name_plural = verbose_nameclass Banner(models.Model): """轮播图models""" title = models.CharField(max_length=100, verbose_name=u\'标题\') image = models.ImageField(upload_to=\'banner/%Y/%m\', verbose_name=u\'轮播图\', max_length=100) 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
【Django打造在线教育平台_day_2(新建users app 编写models之完善)】3、在数据库生成新定义的表,Tools 工具栏运行 run manage.py Task输入:
makemigrations users migrate users
推荐阅读
- 电商APP制作,平台选的好流量自然少不了
- Android 程序打包及签名
- 高速改动android系统默认日期方法
- Vue-router结合transition实现app前进后退动画切换效果
- 2017最新xcode打包APP详细图文
- 扯谈spring mvc之WebApplicationContext的继承关系
- Django打造在线教育平台_day_2(新建users app 编写models之扩展user表)
- android读取通讯录
- 预防 app crash 之 unrecognized selector