Django models 拆分

在进行Django开发的时候,有的时候会遇到models文件过长的问题,这个时候就需要对其进行拆分.

解决models文件过长的问题有两种基本方式:

1. 根据某些条件(比如业务逻辑)拆分app,没必要将一个app写的过于冗长,可以将其进行功能拆分,自然而然,models文件也就没那么长了.

2. 删除掉自动生成的models.py文件,创建models包,记住这里是包,不是文件夹。所以需要在models下添加__init__.py文件。

然后在models下按你的意愿创建模型文件,比如在models/下创建student.py和teacher.py。但是此时执行python manage.py syncdb仍然不能生成对应的数据表。需要在__init__.py文件中导入这些module,并在__init__.py中加入:

from student import *

from teacher import *

现在执行python manage.py syncdb就会生成对应的表了.

当然,还要注意的是,最好在拆分的model中每张表都添加一个元选项:app_label,指明是那个app下的model。

例:

class Student(models.Model):

    name = models.CharField(max_length = 255, null = False)

    age = models.IntegerField(null = True)

    class Meta:

        app_label = 'person'

        db_table = 'student'

这两种方式都可行,但是比较推荐使用第一种方式,首先它不用像第二种方式每个class都添加app_label,另外拆分app会使正个项目结构更加清晰明了.

 

你可能感兴趣的:(Django)