在 Django 中合理布局 models 模块

在默认的 Django 项目中,create app 之后,会出现一个 models.py 文件。

但是,如果我们要写的类很多或者特别长,这个 models.py 就会包含很多代码拉得很长,然后我们就相当有动机去将其分开或者分拆放在不同的文件里面,但是调用的时候跟没分拆一样。

然后今天实验了一下我的想法,最终搞定了,在这里记录一下:

1. 创建 models 模块

在 models.py 的同级创建一个 models 文件夹,在里面创建 init.py 文件,作为一个模块。

2. 转移原有 models.py

将原有的 models.py 移动到 models 文件夹中,然后重命名为 model1.py。 在 init.py 里面加上:

# myproject/myapp/models/init.py from myapp.models.model1 import *

好了,到这里应该文件部署就好了,这样在 model1.py 里面定义的类已经原样引入到 myapp.models 这个模块的命名空间。

然后同样的办法,我们可以添加 model2, model3 等等等等所有你想要的东西。

3. syncdb 的问题

转移之后,我们试一下用 syncdb(可以先删除原来的表),发现没能够创建新的表,当然模型也没办法用。

因为这里缺了一步,在这种情况下需要手动在 Meta 里面指定模型类的 app_label 属性。

在所有 Model 类定义里面加入 Meta,并且将 app_label 属性设置为当前的 app 的名称即可。


【转载请附】愿以此功德,回向 >>

原文链接:http://www.huangwenchao.com.cn/2014/02/django-tip-3.html【在 Django 中合理布局 models 模块】

发表评论

邮箱地址不会被公开。 必填项已用*标注