Django 设置Mysql 数据库字段的类型:python
from django.db import models # Create your models here. class UserInfo(models.Model): #新建表 username=models.CharField(max_length=50) #新建静态字段 password=models.CharField(max_length=50) #新建静态字段 gender=models.BooleanField() #性别 用布尔类型,0或1 表明男女 age=models.IntegerField(default=18) #年龄 数字类型 memo=models.TextField(default='xxx') #文本类型 creatdate=models.DateTimeField(default='2016-12-06 16:52') #时间类型 #ip类型,protocol协议, 能够等于,ipv4,ipv6,both ,不设置,默认为both ip = GenericIPAddressField(protocol='both')
Django 操控 Mysql 数据库 表之间的联系 (外键)sql
一、一对多关系数据库
type=models.ForeignKey('UserType') django
# django 生成的表外键字段当中, 会自动在 外键字段后面加上 _id ,如 type_id服务器
class UserType(models.Model): #主表 name=models.CharField(max_length=50) class UserInfo(models.Model): #新建表 username=models.CharField(max_length=50) #新建静态字段 password=models.CharField(max_length=50) #新建静态字段 gender=models.BooleanField() #性别 用布尔类型,0或1 表明男女 age=models.IntegerField(default=18) #年龄 数字类型 memo=models.TextField(default='xxx') #文本类型 creatdate=models.DateTimeField(default='2016-12-06 16:52') #时间类型 type=models.ForeignKey('UserType') #给子表设置外键
注意: 当用 for 循环遍历 userinfo = UserInfo() 内容的时候 --> for raw in userinfo
raw.type_id (django 会自动给外键字段加_id) --------> 获得 对应的id 数据
raw.type ---------------> 返回 UserType 对象 (ID =XXX)
此时 用 raw.type.name --------------> 就能够获得 对应外键关系 的名称app
二、多对多关系spa
models.ManyToManyField('Group')code
通常有2 张表,经过第3张表 来创建多对多关系,Django 会自动创建第3张表对象
class Group(models.Model): name=models.CharField(max_length=50) class User(models.Model): name=models.CharField(max_length=50) Email=models.CharField(max_length=50) group_relation=models.ManyToManyField('Group') #多对多关系
三、一对一关系ip
models.OneToOneField('Group')
特别说明:
当你的数据库不能同步,之前建立过相同的表,后来删除致使 执行migrate 不能新建表的时候
可以使用下面命令解决
python manage.py migrate appname --fake #appname指你新建的app的名字
此命令还可解决 django.db.utils.OperationalError: (1050, "Table '表名' already exists) 错误
因为Django 查询语法的工做方式,字段名称中连续的下划线不能超过一个。
class Example(models.Model): foo__bar = models.IntegerField() #不能定义 foo__bar (两个下划线)