1. 程式人生 > >[Django筆記] models 深入學習

[Django筆記] models 深入學習

auto date 通過 基本上 數據 數據類型 pre 根據 應用

對著官方文檔擼一遍,順便做點筆記

models 定義了本應用的數據庫表結構。底層可以由不同的數據庫封裝實現,因為不同的數據庫字段類型不一樣,因此,跟以往直接用單一數據庫(如mysql)建立的應用有很大的區別。
models裏面定義的數據類型基本上都是基礎類型,在mysql用的比較多的 timestamp 貌似需要自己去做擴展:

class MyDateField(models.Field):
    def db_type(self, connection):
        if connection.settings_dict[‘ENGINE‘] == ‘django.db.backends.mysql‘:
            return ‘datetime‘
        else:
            return ‘timestamp‘

DatetimeField

auto_now_add = True; 設置添加時默認當前時間。這裏並不是通過數據庫來實現,而是django在添加的時候去計算時間。因此涉及到時區問題:
settings.py 設置 USE_TZ = True 後,django會使用UTC標準時間存入數據庫。這個時候取出的 datetimefield 需要轉換時區才能正確顯示。
因此一般情況下,如果應用不用考慮跨時區問題,設置 USE_TZ = False 一勞永逸
查詢出來的 datetimeField 是一個 <‘datetime‘ object>,根據自己需要進行格式化輸出

[Django筆記] models 深入學習