码迷,mamicode.com
首页 > 数据库 > 详细

Django之数据库连表操作

时间:2018-03-20 00:39:45      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:username   models   常用   bubuko   ima   一对一   lis   需求   django   

1、表结构修改

如果原来表中已存在的数据,表结构修改后就会出现结构混乱,makemigrations更新表的时候就会出错,解决方法:

1、新增加的字段,设置允许为空。生成表的时候,之前数据新增加的字段就会为空。(null=True允许数据库中为空,blank=True允许admin后台中为空)
2、新增加的字段,设置一个默认值。生成表的时候,之前的数据新增加字段就会应用这个默认值

技术分享图片

图片、IP字段

ip = models.GenericIPAddressField(protocol="ipv4",null=True,blank=True)
img = models.ImageField(null=True,blank=True,upload_to="upload")

 技术分享图片

数据中只是报错路径信息

技术分享图片

2、常用参数 

选择下拉框  choices

class UserInfo(models.Model):
    USER_TYPE_LIST = ((1,‘user‘),(2,‘admin‘),)
    user_type = models.IntegerField(choices=USER_TYPE_LIST,default=1)

 技术分享图片

3、连表结构

  • 一对多:models.ForeignKey(其他表)
  • 多对多:models.ManyToManyField(其他表)
  • 一对一:models.OneToOneField(其他表)
应用场景:
一对多:当一张表中创建一行数据时,有一个单选的下拉框(可以被重复选择)
例如:创建用户信息时候,需要选择一个用户类型【普通用户】【金牌用户】【铂金用户】等。
多对多:在某表中创建一行数据是,有一个可以多选的下拉框
例如:创建用户信息,需要为用户指定多个爱好
一对一:在某表中创建一行数据时,有一个单选的下拉框(下拉框中的内容被用过一次就消失了
例如:原有含10列数据的一张表保存相关信息,经过一段时间之后,10列无法满足需求,需要为原来的表再添加5列数据

 一对多情况:

class Game(models.Model):
    gname = models.CharField(max_length=32)
 
class Host(models.Model):
    hostname = models.CharField(max_length=32)
    game = models.ForeignKey(‘Game‘)

 多对多情况:

class UserGroup(models.Model):
    group_name = models.CharField(max_length=16)
 
class User(models.Model):
    name = models.CharField(max_length=16)
    sex = models.CharField(max_length=16)
    email = models.EmailField(max_length=32)
    usergroup_user = models.ManyToManyField(‘UserGroup‘)

 Django model会自动创建第3张关系表,用于对应user id 和usergroup id

一对一情况:

class User2(models.Model):
    name = models.CharField(max_length=16)
    sex = models.CharField(max_length=16)
    email = models.EmailField(max_length=32)
 
class Admin(models.Model):
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=32)
    admin_user2 = models.OneToOneField(‘User2‘)

 技术分享图片

技术分享图片

 

Django之数据库连表操作

标签:username   models   常用   bubuko   ima   一对一   lis   需求   django   

原文地址:https://www.cnblogs.com/honey-badger/p/8605850.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!