我正在将Django管理员设置为以下模型:
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)
使用以下代码:
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分钟寻找答案;我发现了类似的问题,但他们的答案都没有对我有用。)
答案 0 :(得分:118)
Admin documentation有一个专门用于内联多对多关系的部分。您应该使用Quote.tags.through
作为TagInline
的模型,而不是Tag
本身。