2017-03-12 101 views
-1

Models.pyDjango的外鍵

Shell Output

- CODE -

newArtist = Artist(name= "GBA",year_formed=1990) 
    newArtist.save() 
    album1 = Album(name = 'a',artist = newArtist) 
    album2 = Album(name = 'b',artist = newArtist) 
    album3 = Album(name = 'c',artist = newArtist) 
    album1.save() 
    album2.save() 
    album3.save() 
    allAlbums = Album.objects.all() 

嘿,我是很新的Django的這樣已經經歷了文檔的努力,但有錯誤我爲了我的生活無法弄清楚!問題在於處理濾鏡屬性。

我的模型文件中有兩個類:Artist和Album。藝術家也是專輯的外鍵,因爲藝術家可以有許多專輯。目前,我創建了3個專輯實例,全部保存在名爲「GBA」的Artist「newArtist」下。

我所面臨的問題是
1)當嘗試使用藝術家的名字「GBA」空查詢集返回

2)然而過濾,當我切換說明符「newArtist.id」它成功填充了查詢集。 我很困惑,爲什麼藝術家的名字不起作用,是一個語法/邏輯/ Django規則錯誤?

如果有人需要查看更多代碼片段/輸出,請讓我知道。 感謝您的幫助!

+2

請在問題中以文字形式顯示您的代碼。 –

+0

你的代碼看起來很好,所以我想知道你是否在名稱字段上有完全匹配。 – HenryM

+0

你可以試試'Album.objects.filter(artist__name__icontains = newArtist.name)'。它會搜索藝術家名稱包含(不區分大小寫)'newArtist.name'的專輯。 Django ORM的一部分。 – Nifled

回答

1

試試這個:

newArtist = Artist.objects.create(name= "GBA", year_formed=1990) 

album1 = Album.objects.create(name = 'a', artist = newArtist) 
album2 = Album.objects.create(name = 'b', artist = newArtist) 
album3 = Album.objects.create(name = 'c', artist = newArtist) 

allAlbums = Album.objects.all() 
+0

對不起,直到現在還沒有看到你的答案! –