django admin inline没有外键关系

时间:2016-02-24 17:37:08

标签: django

我有一个类似的模型:

class Category(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()
    thumbnail = models.ForeignKey(MediaFile)

    def __unicode__(self):
        return self.name

此处我thumbnailMediaFile个外键。

我希望拥有Inline Category模型。

我做到了:

class MediaInline(admin.StackedInline):
    model = MediaFile
    extra = 0
    max_num=0

class CategoryAdmin(admin.ModelAdmin):
    list_display = ('name',)
    inlines = [ MediaInline, ]

admin.site.register(Category, CategoryAdmin)

它没有发生..我假设MediaFile内联到Category。这里有什么问题?

2 个答案:

答案 0 :(得分:2)

你的外键是错误的方式。如果您想在一个类别中使用多个媒体文件,则fk需要存在于MediaFile模型中。这样内联就可以了。

答案 1 :(得分:1)

您无法以这种方式设置内联,因为类别实例将在MediaFile之前保存。然而,当MediaFile没有保存时​​,Django将无法设置Category.thumbnail。

例如,您应该在CategoryInline中使用MediaFileAdmin