2013-11-04 37 views
0

所以這是我model.py:Django - ForeignKey的默認值不起作用。或者是?

class Album(models.Model): 
    name = models.CharField(max_length=150, default="Default Album") 

    def __unicode__(self): 
     return self.name 


class Photo(Image): 
    album = models.ForeignKey(Album) 

當我嘗試上傳在管理中的照片,有一個下拉列表Album場。但沒有什麼,它的空白。我認爲它會創建一個名爲'Default Album'的新專輯,但它只是給我一個錯誤。我如何指定默認值?

回答

0

所以,當你正在創建一個照片,它試圖分配ForeignKey。如果它是空白,則您的相冊模型中沒有任何條目。 default是指具有在創建新專輯實例的默認值,如

new_album = Album() 
new_album.save() # new_album.name == "Default Album" 

你需要做的是先創建一個相冊,從而下拉填充有至少1 Album。然後,您可以創建一張照片並將其與相應的Album相關聯。

此外,這聽起來像就是你需要有一個默認ForeignKey參考,您可以將特定的ID像ForeignKey(Album, default=1)default=some_fn,其中some_fn查找適當的專輯實例的默認實例。

+0

是的!你說得對。我想要的是將其引用到默認相冊中,只要沒有給出相冊名稱,用戶可以在該相冊中進行保存。我怎麼做? – Aamu

+0

正如我在答案的最後一段所述,只需定義一個默認的ForeignKey即可。在some_fn中,您可以像「Album.objects.get_or_create(name =」Default Album「)」那樣執行某項操作,以根據需要獲取默認相冊。 –

+0

非常感謝您的幫助! – Aamu