close
基本上, 一個django project, 是由許多application組成, 整個 django project, 其實就是一個 python 的 package,
application 是其中的 subpackage
當我們在一個django project 的目錄下, 執行 python manage.py startapp myapp 時, django 會自動幫我們建出
myapp的目錄裡面有 __init__.py, models.py, views.py 三個檔案, 顯然這是一個 python的 package 結構.
當我們寫程式時, models.py 裡面的 model 宣告會越來越多 ... 幾個 model class 還好, 要是更多這個檔案會越來越大
, 於是我就想是否可以把 models.py 拆成多的檔案 ..... Google 了一下, 找到了解法 .....
基本上, 就是把 models.py 變成一個 package ....
首先建出一個叫 models 的目錄 (好像一定要叫 models, 不然 django 會不認得你的 application),
在models 目錄下加入 __init__.py, 和你要分成的models檔案(test.py, aaa.py .....)
然後每個 model class 要加入一個 inner class 叫 Meta, 裡面加入一個 app_label 的屬性, 值是你的 application 名稱
例如:
from django.db import models
class Test(models.Model):
url = models.URLField('鏈結', unique = True)
class Meta:
app_label = 'myapp'
然後在你的 __init__.py中, 加入一行
from test import Test <------ (假設 Test 這個 class 放在 models/test.py這個檔案下)
這樣你在其他程式引入 Test model時, 就可寫成
from myproject.myapp.models import Test
然後把原來的 models.py 檔案殺掉, 即可 .....
這樣就可以把 models.py 變成一個 models package .....
全站熱搜
留言列表