Skip to content

Commit a842830

Browse files
committed
部分修改了第2天的文档
1 parent ab29aee commit a842830

File tree

1 file changed

+30
-25
lines changed

1 file changed

+30
-25
lines changed

Day31-Day35/Django 2.x实战(02) - 深入模型.md

+30-25
Original file line numberDiff line numberDiff line change
@@ -106,29 +106,32 @@
106106
class Dept(models.Model):
107107
"""部门类"""
108108

109-
no = models.IntegerField(primary_key=True, verbose_name='部门编号')
110-
name = models.CharField(max_length=20, verbose_name='部门名称')
111-
location = models.CharField(max_length=10, verbose_name='部门所在地')
109+
no = models.IntegerField(primary_key=True, db_column='dno', verbose_name='部门编号')
110+
name = models.CharField(max_length=20, db_column='dname', verbose_name='部门名称')
111+
location = models.CharField(max_length=10, db_column='dloc', verbose_name='部门所在地')
112112

113113
class Meta:
114+
114115
db_table = 'tb_dept'
115116

116117

117118
class Emp(models.Model):
118119
"""员工类"""
119120

120-
no = models.IntegerField(primary_key=True, verbose_name='员工编号')
121-
name = models.CharField(max_length=20, verbose_name='员工姓名')
121+
no = models.IntegerField(primary_key=True, db_column='eno', verbose_name='员工编号')
122+
name = models.CharField(max_length=20, db_column='ename', verbose_name='员工姓名')
122123
job = models.CharField(max_length=10, verbose_name='职位')
123124
mgr = models.IntegerField(null=True, blank=True, verbose_name='主管编号')
124125
sal = models.DecimalField(max_digits=7, decimal_places=2, verbose_name='月薪')
125126
comm = models.DecimalField(max_digits=7, decimal_places=2, null=True, blank=True, verbose_name='补贴')
126127
dept = models.ForeignKey(Dept, on_delete=models.PROTECT, verbose_name='所在部门')
127128

128129
class Meta:
130+
129131
db_table = 'tb_emp'
130132

131133
```
134+
> 说明:如果不能理解定义模型类使用的字段类及其属性的含义,可以参考文末字段类、字段属性、元数据选项的说明。
132135
133136
5. 通过模型创建数据表。
134137

@@ -248,40 +251,42 @@ Django模型字段类
248251

249252
ForeignKey属性
250253

251-
1. limit_choices_to
252-
2. related_name
253-
3. relate_query_name
254-
4. to_field
255-
5. db_constraint
256-
6. on_delete
254+
1. limit_choices_to:值是一个Q对象或返回一个Q对象,用于限制后台显示哪些对象。
255+
2. related_name:用于获取关联对象的关联管理器对象(反向查询),如果不允许反向,该属性应该被设置为`'+'`,或者以`'+'`结尾。
256+
3. to_field:指定关联的字段,默认关联对象的主键字段。
257+
4. db_constraint:是否为外键创建约束,默认值为True。
258+
5. on_delete:外键关联的对象被删除时对应的动作,可取的值包括django.db.models中定义的:
259+
- CASCADE:级联删除。
260+
- PROTECT:抛出ProtectedError异常,阻止删除引用的对象。
261+
- SET_NULL:把外键设置为null,当null属性被设置为True时才能这么做。
262+
- SET_DEFAULT:把外键设置为默认值,提供了默认值才能这么做。
257263

258264
ManyToManyField属性
259265

260-
1. symmetrical
261-
2. through
262-
3. throughfields
263-
4. db_table
266+
1. symmetrical:是否建立对称的多对多关系。
267+
2. through:指定维持多对多关系的中间表的Django模型。
268+
3. throughfields:定义了中间模型时可以指定建立多对多关系的字段。
269+
4. db_table:指定维持多对多关系的中间表的表名。
264270

265271
#### 模型元数据选项
266272

267273
| 选项 | 说明 |
268274
| --------------------- | ------------------------------------------------------------ |
269-
| abstract | |
275+
| abstract | 设置为True时模型是抽象父类 |
270276
| app_label | 如果定义模型的应用不在INSTALLED_APPS中可以用该属性指定 |
271277
| db_table | 模型使用的数据表名称 |
272-
| db_tablespace | |
278+
| db_tablespace | 模型使用的数据表空间 |
273279
| default_related_name | 关联对象回指这个模型时默认使用的名称,默认为<model_name>_set |
274-
| get_latest_by | |
280+
| get_latest_by | 模型中可排序字段的名称。 |
275281
| managed | 设置为True时,Django在迁移中创建数据表并在执行flush管理命令时把表移除 |
276-
| order_with_respect_to | |
282+
| order_with_respect_to | 标记对象为可排序的 |
277283
| ordering | 对象的默认排序 |
278-
| permissions | |
284+
| permissions | 创建对象时写入权限表的额外权限 |
279285
| default_permissions | 默认为`('add', 'change', 'delete')` |
280-
| proxy | |
281-
| unique_together | |
282-
| index_together | |
283-
| verbose_name | |
284-
| verbose_name_plural | |
286+
| unique_together | 设定组合在一起时必须独一无二的字段名 |
287+
| index_together | 设定一起建立索引的多个字段名 |
288+
| verbose_name | 为对象设定人类可读的名称 |
289+
| verbose_name_plural | 设定对象的复数名称 |
285290

286291
### 数据库API参考
287292

0 commit comments

Comments
 (0)