Je configure 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 ajouter un Quote
, la page affiche une erreur disant <class 'quotes.models.Tag'> has no ForeignKey to <class 'quotes.models.Quote'>
. Cela ne s'est pas produit avant que j'aie ajouté un inline. Quel est le problème? Comment puis-je ajouter correctement un Tag
en ligne?
(J'ai passé 20 bonnes minutes à chercher une réponse; j'ai trouvé des questions similaires mais aucune de leurs réponses n'a fonctionné pour moi.)
django
django-models
Humphrey bogart
la source
la source
Réponses:
La documentation d'administration a une section dédiée à l'intégration avec des relations plusieurs-à-plusieurs. Vous devez utiliser
Quote.tags.through
comme modèle pourTagInline
, au lieu deTag
lui - même.la source
manytomany field
, cela signifie que pour chacun il en a besoinInline
et qu'ils sont différents?model = Tag.quote_set.related.through