Django admin中的raw_id_fields和ManyToMany

时间:2011-05-25 04:11:51

标签: django django-admin django-orm

我想在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'>

我不清楚我在这里做错了什么。谢谢你的建议。

1 个答案:

答案 0 :(得分:3)

您似乎为InlineAdmin设置了错误的模型 因为您定义的关注者模型是User而不是Profile

docs我会说你应该尝试:

class FollowersInline(admin.TabularInline):
    model = Profile.follows.through

class ProfileAdmin(admin.ModelAdmin):
    ....
    exclude = ('follows',)
    inlines = (FollowersInline,)