2013年8月15日

使用 Django fixtures 一些特點

Django fixtures 比較常用在建立初期資料以及做測試時使用

initial_data.json 不論在django flush, syncdb 之後都會自動建立

fixtures 可以藉由 TestCase 的繼承來達到繼承和共用

fixtures 通常是比較乾淨的作法,但是也相對不靈活,我最後還是拿掉了大部分的 fixtures ,寧願自己建立 creation / deployement process

如果 fixtures 包含 auth.user 則在 syncdb 之後相對應的 auth.permission 會被自動建立。

在使用不同 database engine 的時候可以避免使用 auth.permissions fixtures 以避免 id 衝突 IntegrityError: columns content_type_id, codename are not unique ,如果有自設的 permissions 也可以讓資料先在 sqlite3 建立後再 dump 出來,這樣在用 sqlite3 做測試的時候才不會發生以上問題。


使用範例:
python manage.py dumpdata --indent 4 -n -e contenttypes -e auth.permission -e session > initial_data.json