我想在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'>
我不清楚我做错了什么。谢谢你的建议。
2条答案
按热度按时间c9qzyr3d1#
看起来你为你的
InlineAdmin
设置了错误的模型,因为你为追随者定义的模型是User
而不是Profile
。看了这些文件,我觉得你应该试试:
以及
jexiocij2#
在m2m连接的内联中,您应该使用
through
表,而对于raw_id_fields
设置,您应该使用through
表中的字段-在此表中,字段的名称可能与您预期的不同。您需要转到sqlite3/psql等终端以查看
through
表架构并使用raw_id_fields
的proper字段。