Django admin ManyTomany 内联“ has no ForeignKey to”错误

我将 Django 管理员设置为以下模型:

class Tag(models.Model):
name = models.CharField(max_length=100)


class Quote(models.Model):
author = models.CharField(max_length=100)
quote = models.CharField(max_length=1000)
tags = models.ManyToManyField(Tag)

With the following code:

class TagInline(admin.TabularInline):
model = Tag
                                                                            

class QuoteAdmin(admin.ModelAdmin):
list_display = ('author', 'quote')
inlines = (TagInline,)
                                                                            

class TagAdmin(admin.ModelAdmin):
pass
                                                                            

admin.site.register(Quote, QuoteAdmin)
admin.site.register(Tag, TagAdmin)

当试图查看管理页面以添加 Quote时,该页面显示一个错误,即 <class 'quotes.models.Tag'> has no ForeignKey to <class 'quotes.models.Quote'>。在我添加一个内联之前没有发生这种情况。有什么问题吗?如何正确地添加 Tag作为内联?

(我花了整整20分钟寻找答案; 我找到了类似的问题,但没有一个答案对我有用。)

55331 次浏览

管理文档 有一节专门讨论多对多关系的内联。您应该使用 Quote.tags.through作为 TagInline的模型,而不是 Tag本身。