raw_id_fields и ManyToMany в админке Django - PullRequest
1 голос
/ 25 мая 2011

Я хочу использовать raw_id_fields для отношения ManyToMany в администраторе и хочу, чтобы каждый связанный объект отображался в отдельной строке (в отличие от списка через запятую в одном поле, что является поведением по умолчанию). Следуя примерам, обнаруженным в дикой природе, кажется, что я должен быть в состоянии сделать это:

# 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 Ответ

4 голосов
/ 25 мая 2011

Похоже, вы устанавливаете не ту модель для вашего InlineAdmin в качестве модели для подписчиков вы определяете User, а не Profile.

Глядя на документы Я бы сказал, что вы должны попробовать:

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

и

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