在Django内联管理:没有ForeignKey

use*_*513 8 python django

我有两个Django模型:

class Author(models.Model):
    user_email =  models.CharField(max_length=100, blank=True)
    display_name =  models.CharField(max_length=250)

class Photo(models.Model):
    author = models.ForeignKey(Author)
    image = ThumbnailImageField(upload_to='photos')
Run Code Online (Sandbox Code Playgroud)

要获取内联照片,我在admin.py中:

class PhotoInline(admin.StackedInline):
    model = Author

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('display_name','user_email')
    inlines = [PhotoInline]
Run Code Online (Sandbox Code Playgroud)

我收到一个错误: Exception at /admin/metainf/author/11/

<class 'metainf.models.Author'> has no ForeignKey to <class 'metainf.models.Author'>
Run Code Online (Sandbox Code Playgroud)

为什么?

aru*_*lmr 11

内联模型应该具有到父模型的ForeignKey.要PhotoAuthor模型中使用内联代码,这很好.但您的管理代码应如下所示:

class PhotoInline(admin.StackedInline):
    model = Photo

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('display_name','user_email')
    inlines = [PhotoInline]
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多信息.


bnj*_*jmn 5

那是因为Author没有照片的外键。我认为您需要像这样切换内联模型:

class PhotoInline(admin.StackedInline):
    model = Photo

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('display_name','user_email')
    inlines = [PhotoInline]
Run Code Online (Sandbox Code Playgroud)