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 .....



arrow
arrow
    全站熱搜
    創作者介紹
    創作者 tyhwolf 的頭像
    tyhwolf

    圖靈的塗鴉紙

    tyhwolf 發表在 痞客邦 留言(0) 人氣()