Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
syhp1982
Python-100-Days
提交
a8428301
P
Python-100-Days
项目概览
syhp1982
/
Python-100-Days
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Python-100-Days
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a8428301
编写于
5月 23, 2018
作者:
骆昊的技术专栏
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
部分修改了第2天的文档
上级
ab29aee8
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
30 addition
and
25 deletion
+30
-25
Day31-Day35/Django 2.x实战(02) - 深入模型.md
Day31-Day35/Django 2.x实战(02) - 深入模型.md
+30
-25
未找到文件。
Day31-Day35/Django 2.x实战(02) - 深入模型.md
浏览文件 @
a8428301
...
...
@@ -106,19 +106,20 @@
class Dept(models.Model):
"""部门类"""
no = models.IntegerField(primary_key=True, verbose_name='部门编号')
name = models.CharField(max_length=20, verbose_name='部门名称')
location = models.CharField(max_length=10, verbose_name='部门所在地')
no = models.IntegerField(primary_key=True,
db_column='dno',
verbose_name='部门编号')
name = models.CharField(max_length=20,
db_column='dname',
verbose_name='部门名称')
location = models.CharField(max_length=10,
db_column='dloc',
verbose_name='部门所在地')
class Meta:
db_table = 'tb_dept'
class Emp(models.Model):
"""员工类"""
no = models.IntegerField(primary_key=True, verbose_name='员工编号')
name = models.CharField(max_length=20, verbose_name='员工姓名')
no = models.IntegerField(primary_key=True,
db_column='eno',
verbose_name='员工编号')
name = models.CharField(max_length=20,
db_column='ename',
verbose_name='员工姓名')
job = models.CharField(max_length=10, verbose_name='职位')
mgr = models.IntegerField(null=True, blank=True, verbose_name='主管编号')
sal = models.DecimalField(max_digits=7, decimal_places=2, verbose_name='月薪')
...
...
@@ -126,9 +127,11 @@
dept = models.ForeignKey(Dept, on_delete=models.PROTECT, verbose_name='所在部门')
class Meta:
db_table = 'tb_emp'
```
> 说明:如果不能理解定义模型类使用的字段类及其属性的含义,可以参考文末字段类、字段属性、元数据选项的说明。
5.
通过模型创建数据表。
...
...
@@ -248,40 +251,42 @@ Django模型字段类
ForeignKey属性
1.
limit_choices_to
2.
related_name
3.
relate_query_name
4.
to_field
5.
db_constraint
6.
on_delete
1.
limit_choices_to:值是一个Q对象或返回一个Q对象,用于限制后台显示哪些对象。
2.
related_name:用于获取关联对象的关联管理器对象(反向查询),如果不允许反向,该属性应该被设置为
`'+'`
,或者以
`'+'`
结尾。
3.
to_field:指定关联的字段,默认关联对象的主键字段。
4.
db_constraint:是否为外键创建约束,默认值为True。
5.
on_delete:外键关联的对象被删除时对应的动作,可取的值包括django.db.models中定义的:
-
CASCADE:级联删除。
-
PROTECT:抛出ProtectedError异常,阻止删除引用的对象。
-
SET_NULL:把外键设置为null,当null属性被设置为True时才能这么做。
-
SET_DEFAULT:把外键设置为默认值,提供了默认值才能这么做。
ManyToManyField属性
1.
symmetrical
2.
through
3.
throughfields
4.
db_table
1.
symmetrical
:是否建立对称的多对多关系。
2.
through
:指定维持多对多关系的中间表的Django模型。
3.
throughfields
:定义了中间模型时可以指定建立多对多关系的字段。
4.
db_table
:指定维持多对多关系的中间表的表名。
#### 模型元数据选项
| 选项 | 说明 |
| --------------------- | ------------------------------------------------------------ |
| abstract |
|
| abstract |
设置为True时模型是抽象父类
|
| app_label | 如果定义模型的应用不在INSTALLED_APPS中可以用该属性指定 |
| db_table | 模型使用的数据表名称 |
| db_tablespace |
|
| db_tablespace |
模型使用的数据表空间
|
| default_related_name | 关联对象回指这个模型时默认使用的名称,默认为
<model_name>
_set |
| get_latest_by |
|
| get_latest_by |
模型中可排序字段的名称。
|
| managed | 设置为True时,Django在迁移中创建数据表并在执行flush管理命令时把表移除 |
| order_with_respect_to |
|
| order_with_respect_to |
标记对象为可排序的
|
| ordering | 对象的默认排序 |
| permissions |
|
| permissions |
创建对象时写入权限表的额外权限
|
| default_permissions | 默认为
`('add', 'change', 'delete')`
|
| proxy | |
| unique_together | |
| index_together | |
| verbose_name | |
| verbose_name_plural | |
| unique_together | 设定组合在一起时必须独一无二的字段名 |
| index_together | 设定一起建立索引的多个字段名 |
| verbose_name | 为对象设定人类可读的名称 |
| verbose_name_plural | 设定对象的复数名称 |
### 数据库API参考
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录