原因
我认为,完成一个Dango项目的核心思路是模型的构建,即理清表与表之间的关系,模型弄错,后面视图上将极难处理。过了这么久,十分有必要再对Django中的模型构建上再次整理。
字段
对于字段的命名,不能是关键字,不能包含连续的下划线
常用字段类型
| 字段类型 | 字段说明 | 必选参数 | 可选参数 |
|---|---|---|---|
| AutoField | 数字自增,默认是主键 | - | - |
| BooleanField | True/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 | 图片上传 | 同FileField | width_field:宽 height_field:高 |
| IntegerField | 整数 | - | - |
| IPAddress | IP地址,类型是字符串,例如:“0.0.0.0” | - | - |
| PositiveIntegerField | 正整数 | - | - |
| TextField | 长文本 | - | - |
| URLField | 统一资源定位符 | - | - |
通用字段选项
| 可选内容 | 说明 |
|---|---|
| null | True/False,True代表该字段可以是空值,即不填 |
| blank | True/False,True代表该字段可以为空类型 |
| choices | 选择栏,它的选项表是一个元组嵌套元组:((“JR”,‘Junor’), (“SR”,“Senor”)), 元组内的元组中,第一个参数是数据库存储的值,第二个参数是用户的选项值 |
| db_index | True/Fasle,建立索引 |
| default | 设置默认值 |
| editable | True/False,Fasle代表不能编辑 |
| primary-key | True,一个表只能有一个主键 |
| unique | True,值不能重复 |
表之间的关系模型
没有关联
随便写
一对一
需要一个与之相连的类作为位置参数,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)
本文深入探讨Django模型构建的核心思路,解析字段类型、通用选项及表间关系,包括一对一、一对多和多对多关系的实现方式,强调模型设计对后续视图处理的重要性。

1550

被折叠的 条评论
为什么被折叠?



