發表文章

目前顯示的是 12月, 2018的文章

Django - 單元測試的小概念

第一次寫單元測試的時候,就是看著官方文件還有到處查來的技術文章吸收、了解並拼湊出測試的樣貌。 寫了兩個簡單需要使用資料庫的測試,但是出現問題了! 雖然翻遍google之後改寫解決問題了,仍然百思不得其解,決定上 Django users 求助。 (其實有時候我是有點懼怕問問題的... #畢竟被人嘴過不好好查#或是沒半個人回你#不知道自己是不是問了蠢問題或是沒有仔細檢查BUG) class FirstTest(TestCase): @classmethod def setUpTestData(cls): User.objects.create(username = 'johndoe', password = 'goodtobehere123') ... def test_case_one(self): user = User.objects.get(pk=1) # some assertions here class SecondTest(TestCase): @classmethod def setUpTestData(cls): User.objects.create(username = 'janedoe', password = 'nicetobethere456') def test_case_one(self): user = User.objects.get(pk=1) # some assertions here Q: 為什麼我單獨執行都不會出錯,一起執行後,SecondTest抱錯說找不到對應的User呢? 後來我改成這個樣子,就順順的。 class FirstTest(TestCase): @classmethod def setUpTestData(cls): cls.user = User.objects.create(username = 'johndoe', password = '...

Django - admin 的設定筆記

Django 內建 admin 的設定筆記 → 在某個資料表陳列頁面訂定顯示的欄位。 假設你想要自訂User的呈現資訊,那就得要使用BaseUserAdmin去創建新的UserAdmin。 要顯示那些欄位就必須透過 list_display 設定,賦予的資料必須是一個tuple,裡面就是每個欄位的名稱。 除了models內設定欄外名稱之外,也可以自己命名,然後在下面建立一個跟欄位名稱一樣的function並回傳你想要的內容,這樣就可以更客製化一點了! class UserAdmin(BaseUserAdmin): list_display = ('pk', 'full_name', '生日') # pk 就是 pk def full_name(self, obj): return obj.get_full_name() def 生日(self, obj): return obj.birthday.__format__('%Y-%m-%d') admin.site.unregister(User) admin.site.register(User, UserAdmin) ** 因為Django已經註冊了User,所以要先把User取消註冊,再註冊新的UserAdmin。 → 外鍵在新增/修改時會以選單的方式供選擇,要如何變更選項內容? class NewsAdmin(admin.ModelAdmin): def formfield_for_foreignKey(self, db_field, request, **kwargs): if db_field.name == 'author': # 選定的欄位 return AuthorChoiceField(queryset=User.object.all()) class AuthorChoiceField(forms.ModelChoiceField): def label_form_instance(self, obj): re...