Настройка Django admin filter_horizontal
дает хороший виджет для редактирования отношения "многие ко многим". Но это специальный параметр, который хочет список полей, поэтому он доступен только для модели (admin for), которая определяет ManyToManyField
; как я могу получить тот же виджет на (админе для) другой модели, считая отношения назад?
Мои модели выглядят так (не стесняйтесь игнорировать сложность User
/UserProfile
, это реальный вариант использования):
class Site(models.Model):
pass
class UserProfile(models.Model):
user = models.OneToOneField(to=User,unique=True)
sites = models.ManyToManyField(Site,blank=True)
Я могу получить хороший виджет в форме администратора для UserProfile
с помощью
filter_horizontal = ('sites',)
но не может увидеть, как получить эквивалент в Site
admin.
Я также могу получить частичный путь, добавив строку в строку SiteAdmin
, определенную как:
class SiteAccessInline(admin_module.TabularInline):
model = UserProfile.sites.through
Это круговое и неудобное; виджет не совсем интуитивно понятен для простого управления отношениями "многие ко многим".