越光后端开发——ygapi(2.新建Model)
1.新建Model
1.users数据
1.在apps/users/models.py中:
from datetime import datetime
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
class UserProfile(AbstractUser):
"""
管理员
"""
name=models.CharField(max_length=30,null=True,blank=True,verbose_name='姓名')
mobile=models.CharField(max_length=11,null=True,blank=True,verbose_name='电话')
class Meta:
verbose_name='管理员'
verbose_name_plural = verbose_name
def __str__(self):
return self.username
class WxUsers(models.Model):
"""
微信用户
"""
open_id=models.CharField(max_length=64,null=True,blank=True,verbose_name='OpenId')
token=models.CharField(max_length=64,null=True,blank=True,verbose_name='token')
nickName=models.CharField(max_length=30,null=True,blank=True,verbose_name='微信名')
avatarUrl=models.CharField(max_length=200,null=True,blank=True,verbose_name='用户头像URL')
gender = models.CharField(max_length=4, choices=((',
verbose_name='性别')
province=models.CharField(max_length=20,null=True,blank=True,verbose_name='用户所在省')
city=models.CharField(max_length=20,null=True,blank=True,verbose_name='用户所在市')
country=models.CharField(max_length=20,null=True,blank=True,verbose_name='用户所在旗县区')
longitude=models.CharField(max_length=10,null=True,blank=True,verbose_name='经度')
latitude=models.CharField(max_length=10,null=True,blank=True,verbose_name='纬度')
last_login_time = models.DateTimeField(default=datetime.now, verbose_name="最后登录时间")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
class Meta:
verbose_name='微信用户'
verbose_name_plural=verbose_name
def __str__(self):
return self.nickName
2.在settings.py中增加配置项
AUTH_USER_MODEL='users.UserProfile'

3.执行数据更新命令:
python manage.py makemigrations python manage.py migrate

2.wish数据
1.apps/wish/models.py中
from django.db import models
from users.models import WxUsers,UserProfile
from datetime import datetime
from django.utils.safestring import mark_safe
# Create your models here.
class Wish(models.Model):
"""
愿望表
"""
wxuser=models.ForeignKey(WxUsers,on_delete=models.CASCADE)
content=models.CharField(max_length=200,default='',verbose_name='愿望内容',help_text='最多200字')
status=models.CharField(max_length=8, choices=((',
verbose_name='阶段')
pv_num=models.IntegerField(default=0,verbose_name='浏览数')
up_num=models.IntegerField(default=0,verbose_name='点赞数')
share_num=models.IntegerField(default=0,verbose_name='转发数')
bb_num=models.IntegerField(default=0,verbose_name='评论数')
end_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
class Meta:
verbose_name='愿望表'
verbose_name_plural=verbose_name
def __str__(self):
return self.content
class News(models.Model):
"""
新闻表
"""
user=models.ForeignKey(UserProfile,on_delete=models.CASCADE)
banner=models.ImageField(max_length=200, upload_to='banner/',verbose_name='轮播图')
title=models.CharField(max_length=15,default='',verbose_name='新闻标题',help_text='最多15字')
content=models.CharField(max_length=800,default='',verbose_name='新闻正文',help_text='最多800字')
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
class Meta:
verbose_name='新闻表'
verbose_name_plural=verbose_name
def __str__(self):
return self.title
def image_url(self):
return mark_safe('<img src="/media/{0}" class="field_img">'.format(self.banner))
image_url.short_description = '轮播图'
class Images(models.Model):
"""
新闻图片
"""
image = models.ImageField(max_length=200, upload_to='images/')
news=models.ForeignKey(News, verbose_name="新闻", blank=True,null=True,on_delete=models.CASCADE)
add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间')
class Meta:
verbose_name = "新闻图片"
verbose_name_plural = verbose_name
def image_url(self):
return mark_safe('<img src="/media/{0}" class="field_img">'.format(self.image))
image_url.short_description = '图片'
2.安装 pillow包(做图片处理的)
pip install pillow
3.执行数据更新命令:
python manage.py makemigrations python manage.py migrate
3.user_operation数据
1.apps/user_operation/models.py中
from django.db import models
from datetime import datetime
from users.models import WxUsers,UserProfile
from wish.models import Wish
# Create your models here.
class Message(models.Model):
"""
评论表,消息表
"""
user_send=models.ForeignKey(WxUsers,on_delete=models.CASCADE,verbose_name='发出方',related_name='send')
user_receive = models.ForeignKey(WxUsers, on_delete=models.CASCADE, verbose_name='接收方', related_name='receive')
wish=models.ForeignKey(Wish,on_delete=models.CASCADE,verbose_name='被评论的愿望')
content = models.CharField(max_length=30, default='', verbose_name='内容', help_text='最多30字')
is_read=models.BooleanField(default=False,verbose_name='是否已读')
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
class Meta:
verbose_name='评论表'
verbose_name_plural=verbose_name
def __str__(self):
return self.content
class Pick(models.Model):
"""
点赞表
"""
user = models.ForeignKey(WxUsers, on_delete=models.CASCADE, verbose_name='点赞者')
wish = models.ForeignKey(Wish, on_delete=models.CASCADE, verbose_name='被点赞的愿望')
action=models.BooleanField(default=True,verbose_name='行为',help_text='true是点赞false是取消点赞')
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
class Meta:
verbose_name='点赞表'
verbose_name_plural=verbose_name
def __str__(self):
return self.user
class Share(models.Model):
"""
分享表
"""
user = models.ForeignKey(WxUsers, on_delete=models.CASCADE, verbose_name='分享者')
wish = models.ForeignKey(Wish, on_delete=models.CASCADE, verbose_name='被分享的愿望')
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
class Meta:
verbose_name='分享表'
verbose_name_plural=verbose_name
def __str__(self):
return self.user
class Notice(models.Model):
"""
系统通知表(超越私信)
"""
admin=models.ForeignKey(UserProfile,on_delete=models.CASCADE)
content = models.CharField(max_length=200, default='', verbose_name='内容', help_text='最多200字')
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
class Meta:
verbose_name='系统通知表'
verbose_name_plural=verbose_name
def __str__(self):
return self.content
2.执行数据更新命令:
python manage.py makemigrations python manage.py migrate
越光后端开发——ygapi(2.新建Model)的更多相关文章
- 越光后端开发——ygapi(3.引入xadmin)
1.引入xadmin 1.将xadmin文件夹放入extra_apps目录下: 2.在每个app下新建adminx.py 1.apps/users/目录下新建adminx.py: import xad ...
- 越光后端开发——ygapi(1.新建项目ygapi、新建MySQL数据库yg、项目连接数据库)
1.新建MySQL数据库 show databases;//查看已经有的数据库 create database yg; 2.新建项目ygapi 1.使用pycharm新建django项目取名ygapi ...
- 超越村后端开发(2:新建models.py+xadmin的引入)
1.新建Model 1.users数据 1.在apps/users/models.py中: from datetime import datetime from django.db import mo ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十四 ║ VUE 计划书 & 我的前后端开发简史
---新内容开始--- 番外 大家周一好呀,又是元气满满的一个周一呀!感谢大家在周一这个着急改Bug的黄金时期,抽出时间来看我的博文哈哈哈,时间真快,已经到第十四篇博文了,也很顺顺(跌跌)利利 (撞撞 ...
- 后端开发实践——Spring Boot项目模板
在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...
- (译)Windows Azure:移动后端开发的主要更新
Windows Azure:移动后端开发的主要更新 这周我们给Windows Azure释出了一些很棒的更新,让云上的移动应用开发明显的简单了.这 些新功能包括: 移动服务:定制API支持移动服务:G ...
- 奉上简单的.Net后端开发模板
假定一个场景,开始做开发的你,领导走到你的面前说道:"小伙子,看了简历和最近的工作表现,很不错,现在交给一个任务,开发一个简单的CMS后端接口吧,前端有人配合你",当时你内心读白: ...
- 后端开发使用pycharm的技巧
后端开发使用pycharm的技巧 目录 后端开发使用pycharm的技巧 1.使用说明 2.database 3.HTTP Client 1.使用说明 首先说明,本文所使用的功能为pycharm专业版 ...
- Java 后端开发常用的 10 种第三方服务
请肆无忌惮地点赞吧,微信搜索[沉默王二]关注这个在九朝古都洛阳苟且偷生的程序员.本文 GitHub github.com/itwanger 已收录,里面还有我精心为你准备的一线大厂面试题. 严格意义上 ...
随机推荐
- 注册Github过程
第一步当然是建立自己的账号密码了: 一: github官网地址:https://github.com/ (1)第一步:首先起一个属于自己用户的名字(username),用户名字只能包含字母数字的字符或 ...
- git 的 origin 的含义
我们从progit 一书中可以看到: 远程仓库名字 “origin” 与分支名字 “master” 一样,在 Git 中并没有任何特别的含义一样. 同时“master”是当你运行git init时默认 ...
- 关于在Python2中使用列表推导式会遇到的问题
摘自<流畅的Python>第二部分第二章2.2 Python 2.x 中,在列表推导中 for 关键词之后的赋值操作可能会影响列表推导上下文中的同名变量.像下面这个 Python 2.7 ...
- SQL学习笔记---常用命令
常用命令 变量 1.声明 declare @变量名 类型,… 2.赋值 1.同时赋值多个变量(可以结合查询) select @变量名=表达式1,表达式2 2.单个赋值(推荐) set @变量名=表达式 ...
- Python__装饰器练习题
一:编写函数,(函数执行的时间是随机的) import time def timmer(func): def wrapper(*args,**kwargs): start= time.time() f ...
- swoole多端口监听
今天测试swoole写webserver实现多端口监听.记录下爬过的坑:关于tcp协议监听触发不到receive!!!!! 首先上服务端代码 class Http { /** * 服务实例 * @va ...
- springMVC框架核心方法调用源码解析
- react组件之间的通信
通过props传递 共同的数据放在父组件上, 特有的数据放在自己组件内部(state),通过props可以传递一般数据和函数数据, 只能一层一层传递 一般数据-->父组件传递数据给子组件--&g ...
- 基于Armitage的MSF自动化集成攻击实践
基于Armitage的MSF自动化集成攻击实践 目录 0x01 实践环境 0x02 预备知识 0x03 Armitage基础配置 0x04 Nmap:Armitage下信息搜集与漏洞扫描 0x05 A ...
- go笔记-限速器(limiter)
参考: https://blog.csdn.net/wdy_yx/article/details/73849713https://www.jianshu.com/p/1ecb513f7632 http ...