Estoy configurando el administrador de Django para los siguientes modelos:
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)
Con el siguiente código:
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)
Al intentar ver la página de administración para agregar un Quote, la página muestra un mensaje de error <class 'quotes.models.Tag'> has no ForeignKey to <class 'quotes.models.Quote'>. Esto no sucedió antes de que agregara un archivo en línea. ¿Cuál es el problema? ¿Cómo agrego correctamente un Tagcomo en línea?
(Pasé unos buenos 20 minutos buscando una respuesta; encontré preguntas similares pero ninguna de sus respuestas funcionó para mí).
django
django-models
Humphrey Bogart
fuente
fuente

Respuestas:
La documentación del administrador tiene una sección dedicada a la integración con relaciones de varios a varios. Debe usarlo
Quote.tags.throughcomo modelo paraTagInline, en lugar deTagsí mismo.fuente
manytomany field, eso significa que para cada uno necesita unInliney son diferentes?model = Tag.quote_set.related.through