Django模型构建与字段关系

本文深入探讨Django模型构建的核心思路,解析字段类型、通用选项及表间关系,包括一对一、一对多和多对多关系的实现方式,强调模型设计对后续视图处理的重要性。

原因

我认为,完成一个Dango项目的核心思路是模型的构建,即理清表与表之间的关系,模型弄错,后面视图上将极难处理。过了这么久,十分有必要再对Django中的模型构建上再次整理。

字段

对于字段的命名,不能是关键字,不能包含连续的下划线

常用字段类型

字段类型字段说明必选参数可选参数
AutoField数字自增,默认是主键--
BooleanFieldTrue/False--
CharField中小长度字符串max_length-
DatetimeField日期时间-auto_now:每次保存时设置为保存时的时间 ,常用与最后一次访问时间
auto_now_add:只会设置第一次添加时的时间,后面不能改变,常用与注册时间
TimeField时间-同DatetimeField
DateField日期-同DatetimeField
EmailField邮箱格式max_length=75,系统默认,不能修改-
FileField文件上传upload_to,指向本地文件路径,在settings.py中的MEDIA_ROOT后面-
FloatField浮点数max_digits:最长数字长度
decimal_places:小数位数
-
ImageField图片上传同FileFieldwidth_field:宽
height_field:高
IntegerField整数--
IPAddressIP地址,类型是字符串,例如:“0.0.0.0”--
PositiveIntegerField正整数--
TextField长文本--
URLField统一资源定位符--

通用字段选项

可选内容说明
nullTrue/False,True代表该字段可以是空值,即不填
blankTrue/False,True代表该字段可以为空类型
choices选择栏,它的选项表是一个元组嵌套元组:((“JR”,‘Junor’),
(“SR”,“Senor”)),
元组内的元组中,第一个参数是数据库存储的值,第二个参数是用户的选项值
db_indexTrue/Fasle,建立索引
default设置默认值
editableTrue/False,Fasle代表不能编辑
primary-keyTrue,一个表只能有一个主键
uniqueTrue,值不能重复

表之间的关系模型

没有关联

随便写

一对一

需要一个与之相连的类作为位置参数,OnetoOneField

class IDcard(models.Model):
    id=models.IntegerField(primary_key=True)
    realname=models.CharField(max_length=20)


class Residents(models.Model):
    id = models.IntegerField(primary_key=True)
    card_id=models.OneToOneField(IDcard,on_delete=True)

一对多

在“多”的字段上设置Foreignkey,需要一个与之相连的类作为位置参数

class Host(models.Model):
    ...

class Credit_card(models.Model):
    host=models.ForeignKey(Host,on_delete=True)

多对多

在一个表的字段上ManytoMany即可,需要一个与之相连的类作为位置参数

class IDcard(models.Model):
    id=models.IntegerField(primary_key=True)
    realname=models.CharField(max_length=20)


class Residents(models.Model):
    id = models.IntegerField(primary_key=True)
    card_id=models.OneToOneField(IDcard,on_delete=True)

注册模型

在models.py中定义了数据表之后,需要在APP下的admin.py中注册,以便于在后台网站中使用。

from models.py import *




admin.site.register(Actors)
admin.site.register(Movie)
admin.site.register(IDcard)
admin.site.register(Residents)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值