<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                <!-- 譯者:Github@wizardforcel --> # 為模型提供初始數據 # 當你首次建立一個應用的時候,為你的數據庫預先安裝一些硬編碼的數據,是很有用處的。 有幾種方法可以讓Django自動創建這些數據:你可以通過fixtures提供初始數據,或者提供一個包含初始數據的sql文件。 通常來講,使用fixtrue更加簡潔,因為它是數據庫無關的,而使用sql初始化更加靈活。 ## 提供初始數據的fixtures ## fixture是數據的集合,讓Django了解如何導入到數據庫中。創建fixture的最直接的方式,是使用manage.py dumpdata命令,如果數據庫中已經有了一些數據。或者你可以手寫fixtures。fixtures支持JSON、XML或者YAML(需要安裝PyYAML)文檔。序列化文檔中詳細闡述了每一種所支持的序列化格式。 下面這個例子展示了一個簡單的Person 模型的fixtrue,看起來很像JSON: ``` [ { "model": "myapp.person", "pk": 1, "fields": { "first_name": "John", "last_name": "Lennon" } }, { "model": "myapp.person", "pk": 2, "fields": { "first_name": "Paul", "last_name": "McCartney" } } ] ``` 下面是它的YAML格式: ``` - model: myapp.person pk: 1 fields: first_name: John last_name: Lennon - model: myapp.person pk: 2 fields: first_name: Paul last_name: McCartney ``` 你可以把這些數據儲存在你應用的fixtures目錄中。 加載數據很簡單:只要調用manage.py loaddata &lt;fixturename&gt;就好了,其中&lt;fixturename&gt;是你所創建的fixture文件的名字。每次你運行loaddata的時候,數據都會從fixture讀出,并且重復加載進數據庫。注意這意味著,如果你修改了fixtrue創建的某一行,然后再次運行了 loaddata,你的修改將會被抹掉。 ## 自動加載初始數據的fixtures ## ``` 1.7中廢除: 如果一個應用使用了遷移,將不會自動加載fixtures。由于Django 1.9中,遷移將會是必要的,這一行為經權衡之后被廢除。 如果你想在一個應用中加載初始數據,考慮在數據遷移中加載它們。 ``` 如果你創建了一個命名為 initial_data.[xml/yaml/json]的fixtrue,在你每次運行migrate命令時,fixtrue都會被加載。這非常方面,但是要注意:記住數據在你每次運行migrate命令后都會被刷新。So don’t use initial_data for data you’ll want to edit. ## Django在哪里尋找fixture文件 ## 通常,Django 在每個應用的fixtures目錄中尋找fixture文件。你可以設置FIXTURE_DIRS選項為一個額外目錄的列表,Django會從里面尋找。 運行manage.py loaddata命令的時候,你也可以指定一個fixture文件的目錄,它會覆蓋默認設置中的目錄。 > 另見 > > fixtrues也被用于測試框架來搭建一致性的測試環境。 ## 提供初始SQL數據 ## ``` 1.7中廢除: 如果一個應用使用遷移,初始SQL數據將不會加載(包括后端特定的SQL數據)。由于Django 1.9中,遷移將會是必須的,這一行為經權衡后被廢除。如果你想在應用中使用初始SQL數據,考慮在數據遷移中使用它們。 ``` Django為數據庫無關的SQL提供了一個鉤子,當你運行migrate命令時,CREATE TABLE語句執行之后就會執行它。你可以使用這個鉤子來建立默認的記錄,或者創建SQL函數、視圖、觸發器以及其它。 鉤子十分簡單:Django會在你應用的目錄中尋找叫做sql/&lt;modelname&gt;.sql的文件,其中 &lt;modelname&gt;是小寫的模型名稱。 所以如果在myapp應用中存在Person模型,你應該在myapp目錄的文件sql/person.sql中添加數據庫無關的SQL。下面的例子展示了文件可能會包含什么: ``` INSERT INTO myapp_person (first_name, last_name) VALUES ('John', 'Lennon'); INSERT INTO myapp_person (first_name, last_name) VALUES ('Paul', 'McCartney'); ``` 每個提供的SQL文件,都應該含有用于插入數據的有效的SQL語句(例如,格式適當的INSERT語句,用分號分隔)。 這些SQL文件可被manage.py中的 sqlcustom和sqlall命令閱讀。詳見manage.py文檔。 注意如果你有很多SQL數據文件,他們執行的順序是不確定的。唯一可以確定的是,在你的自定義數據文件被執行之前,所有數據表都被創建好了。 > 初始SQL數據和測試 > > 這一技巧不能以測試目的用于提供初始數據。Django的測試框架在每次測試后都會刷新測試數據庫的內容。所以,任何使用自定義SQL鉤子添加的數據都會丟失。 > > 如果你需要在測試用例中添加數據,你應該在測試fixture中添加它,或者在測試用例的setUp()中添加。 ## 數據庫后端特定的SQL數據 ## 沒有鉤子提供給后端特定的SQL數據。例如,你有分別為PostgreSQL和SQLite準備的初始數據文件。對于每個應用,Django都會尋找叫做&lt;app_label&gt;/sql/&lt;modelname&gt;.&lt;backend&gt;.sql的文件,其中&lt;app_label&gt;是小寫的模型名稱,&lt;modelname&gt;是小寫的模型名稱,&lt;backend&gt;是你的設置文件中由ENGINE提供的模塊名稱的最后一部分(例如,如果你定義了一個數據庫,ENGINE的值為django.db.backends.sqlite3,Django會尋找&lt;app_label&gt;/sql/&lt;modelname&gt;.sqlite3.sql)。 后端特定的SQL數據會先于后端無關的SQL數據執行。例如,如果你的應用包含了sql/person.sql 和sql/person.sqlite3.sql文件,而且你已經安裝了SQLite應用,Django會首先執行 sql/person.sqlite3.sql的內容,其次才是sql/person.sql。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看