from django.contrib.auth.models import User from django.db import models job_types = [ (0, '技术类'), (1, '产品类'), (2, '运营类'), (3, '设计类') ] Cities = [ (0, '北京'), (1, '上海'), (2, '广州'), (3, '深圳') ] # Create your models here. class Jobs(models.Model): # blank=False 不允许为空 job_type = models.SmallIntegerField(blank=False, choices=job_types, verbose_name="职业类型") job_name = models.CharField(max_length=250, blank=False, verbose_name="职业名称") job_city = models.SmallIntegerField(choices=Cities, blank=False, verbose_name="工作地点") job_responsibility = models.TextField(max_length=1024, verbose_name="职位职责") job_requirement = models.TextField(max_length=1024, blank=False, verbose_name="职位要求") # on_delete=models.SET_NULL() 数据删除外键关联如何处理,可以忽略,可以级联删除,也可以设置为空,是个函数 creator = models.ForeignKey(User, verbose_name="创建人", on_delete=models.SET_DEFAULT, default='admin') created_time = models.DateTimeField(verbose_name="创建时间") modified_time = models.DateTimeField(verbose_name="修改时间")
安装MySQL软件安装包
在项目的 __init__.py 中 import pymysql pymysql.install_as_MySQLdb()
安装失败,尝试用PIP命令的方式
没有PIP命令,执行下面的命令安装
-m pip install --upgrade
数据库连接配置
'ENGINE': 'django.db.backends.mysql', # 数据库连接方式 'NAME': 'python_test05', # 数据库名称 'USER': 'xxxxx', # 数据库用户 'PASSWORD': 'xxxxxxxx', # 数据库密码 远程服务器的 'HOST': 'xxxxx.xxxxx.xxxxxx.xxxxx', # 数据库IP地址 'PORT': '3306', # 数据库端口 'ATOMIC_REQUESTS': True # 全局生效自动提交事务
在 项目的引入mysql数据库包
添加一个文章类的数据模型,用来练手一对多,和多对多的关系
from django.db import models # Create your models here. class Book(models.Model): title = models.CharField(max_length=50, verbose_name="书籍名称") price = models.IntegerField(verbose_name="书籍价格") pub_date = models.DateField(verbose_name="出版日期") reading_quantity = models.IntegerField(verbose_name="阅读量") comments = models.IntegerField(verbose_name="评论量") publish = models.ForeignKey("Publish", on_delete=models.CASCADE, verbose_name="出版社名称") authors = models.ManyToManyField("Author", verbose_name="作者") def __str__(self): return self.title class Publish(models.Model): name = models.CharField(max_length=50, verbose_name="出版社名称") pub_email = models.EmailField(verbose_name="出版社邮箱") def __str__(self): return self.name class Author(models.Model): name = models.CharField(max_length=50, verbose_name="作者名称") age = models.IntegerField(verbose_name="作者年龄") author_email = models.EmailField(verbose_name="作者邮箱") def __str__(self): return self.name