我想在admin中的ManyToMany关系上使用raw_id_fields,并且我希望每个相关对象都显示在它自己的行上(而不是单个字段中的逗号分隔列表,这是默认行为)。以下在野外发现的例子,似乎我应该能够这样做:
# models.py
class Profile(models.Model):
...
follows = models.ManyToManyField(User,related_name='followees')
# admin.py
class FollowersInline(admin.TabularInline):
model = Profile
raw_id_fields = ('follows',)
extra = 1
class ProfileAdmin(admin.ModelAdmin):
search_fields = ('user__first_name','user__last_name','user__username',)
inlines = (FollowersInline,)
admin.site.register(Profile,ProfileAdmin)
但这会产生错误:
<class 'bucket.models.Profile'> has no ForeignKey to <class 'bucket.models.Profile'>
我不清楚我在这里做错了什么。谢谢你的建议。
答案 0 :(得分:3)
您似乎为InlineAdmin
设置了错误的模型
因为您定义的关注者模型是User
而不是Profile
。
看docs我会说你应该尝试:
class FollowersInline(admin.TabularInline):
model = Profile.follows.through
和
class ProfileAdmin(admin.ModelAdmin):
....
exclude = ('follows',)
inlines = (FollowersInline,)