Django admin ManyToMany inline “n’a pas ForeignKey to” erreur

Je suis en train de configurer l’administrateur Django sur les modèles suivants:

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

Avec le code suivant:

 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) 

Lorsque vous essayez d’afficher la page d’administration pour append un Quote , la page affiche une erreur indiquant que has no ForeignKey to . Cela ne s’est pas produit avant que j’ajoute un inline. Quel est le problème? Comment puis-je append correctement un Tag en ligne?

(J’ai passé une bonne vingtaine de minutes à chercher une réponse; j’ai trouvé des questions similaires, mais aucune de mes réponses n’a fonctionné pour moi.)

La documentation administrative contient une section dédiée à l’inclusion dans des relations plusieurs à plusieurs. Vous devez utiliser Quote.tags.through comme modèle pour TagInline , au lieu de Tag lui-même.