|
106 | 106 | class Dept(models.Model):
|
107 | 107 | """部门类"""
|
108 | 108 |
|
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='部门所在地') |
112 | 112 |
|
113 | 113 | class Meta:
|
| 114 | + |
114 | 115 | db_table = 'tb_dept'
|
115 | 116 |
|
116 | 117 |
|
117 | 118 | class Emp(models.Model):
|
118 | 119 | """员工类"""
|
119 | 120 |
|
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='员工姓名') |
122 | 123 | job = models.CharField(max_length=10, verbose_name='职位')
|
123 | 124 | mgr = models.IntegerField(null=True, blank=True, verbose_name='主管编号')
|
124 | 125 | sal = models.DecimalField(max_digits=7, decimal_places=2, verbose_name='月薪')
|
125 | 126 | comm = models.DecimalField(max_digits=7, decimal_places=2, null=True, blank=True, verbose_name='补贴')
|
126 | 127 | dept = models.ForeignKey(Dept, on_delete=models.PROTECT, verbose_name='所在部门')
|
127 | 128 |
|
128 | 129 | class Meta:
|
| 130 | + |
129 | 131 | db_table = 'tb_emp'
|
130 | 132 |
|
131 | 133 | ```
|
| 134 | + > 说明:如果不能理解定义模型类使用的字段类及其属性的含义,可以参考文末字段类、字段属性、元数据选项的说明。 |
132 | 135 |
|
133 | 136 | 5. 通过模型创建数据表。
|
134 | 137 |
|
@@ -248,40 +251,42 @@ Django模型字段类
|
248 | 251 |
|
249 | 252 | ForeignKey属性
|
250 | 253 |
|
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:把外键设置为默认值,提供了默认值才能这么做。 |
257 | 263 |
|
258 | 264 | ManyToManyField属性
|
259 | 265 |
|
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:指定维持多对多关系的中间表的表名。 |
264 | 270 |
|
265 | 271 | #### 模型元数据选项
|
266 | 272 |
|
267 | 273 | | 选项 | 说明 |
|
268 | 274 | | --------------------- | ------------------------------------------------------------ |
|
269 |
| -| abstract | | |
| 275 | +| abstract | 设置为True时模型是抽象父类 | |
270 | 276 | | app_label | 如果定义模型的应用不在INSTALLED_APPS中可以用该属性指定 |
|
271 | 277 | | db_table | 模型使用的数据表名称 |
|
272 |
| -| db_tablespace | | |
| 278 | +| db_tablespace | 模型使用的数据表空间 | |
273 | 279 | | default_related_name | 关联对象回指这个模型时默认使用的名称,默认为<model_name>_set |
|
274 |
| -| get_latest_by | | |
| 280 | +| get_latest_by | 模型中可排序字段的名称。 | |
275 | 281 | | managed | 设置为True时,Django在迁移中创建数据表并在执行flush管理命令时把表移除 |
|
276 |
| -| order_with_respect_to | | |
| 282 | +| order_with_respect_to | 标记对象为可排序的 | |
277 | 283 | | ordering | 对象的默认排序 |
|
278 |
| -| permissions | | |
| 284 | +| permissions | 创建对象时写入权限表的额外权限 | |
279 | 285 | | 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 | 设定对象的复数名称 | |
285 | 290 |
|
286 | 291 | ### 数据库API参考
|
287 | 292 |
|
|
0 commit comments