Django - ForeignKey的默认值不起作用。或者是吗?

时间:2013-11-04 17:28:33

标签: django django-models django-admin

所以这是我的model.py:

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'的新专辑,但它只是给我一个错误。如何指定默认值?

1 个答案:

答案 0 :(得分:0)

因此,当您创建照片时,它会尝试分配ForeignKey。如果它是空白的,则您的相册模型中没有任何条目。 default指的是在创建新的Album实例时具有默认值,例如

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查找相应的相册实例。