Django admin ManyToMany inline“has no ForeignKey to”error

z4iuyo4d  于 2023-03-31  发布在  Go
关注(0)|答案(1)|浏览(133)

我将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)

使用以下代码:

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分钟寻找答案;我发现了类似的问题,但他们的答案对我都不起作用。

ruarlubt

ruarlubt1#

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

相关问题