Django admin ManyToMany inline "has no ForeignKey to" error

DjangoDjango Models

Django Problem Overview


I'm setting up the Django admin to the following models:

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)

When trying to view the admin page to add a Quote, the page shows an error saying <class 'quotes.models.Tag'> has no ForeignKey to <class 'quotes.models.Quote'>. This didn't happen before I added an inline. What's the problem? How do I correctly add a Tag as an inline?

(I spent a good 20 minutes searching for an answer; I found similar questions but none of their answers worked for me.)

Django Solutions


Solution 1 - Django

Admin documentation has a section dedicated to inlining with many-to-many relationships. You should use Quote.tags.through as a model for TagInline, instead of Tag itself.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionHumphrey BogartView Question on Stackoverflow
Solution 1 - DjangoCat Plus PlusView Answer on Stackoverflow