Интерфейс администратора Django :с использованием горизонтального _фильтра со встроенным полем ManyToMany

У меня есть поле модели Django, которое я хотел бы встроить. Поле представляет собой отношение многие -к -многим. Итак, есть «Проекты» и «Профили пользователей». Каждый профиль пользователя может выбрать любое количество проектов.

В настоящее время у меня работает «табличное» встроенное представление. Есть ли способ иметь «горизонтальный фильтр», чтобы я мог легко добавлять и удалять проекты из профиля пользователя?

Пожалуйста, смотрите прикрепленное изображение для примера.enter image description here

Вот код модели для профиля пользователя:

class UserProfile(models.Model):
    user = models.OneToOneField(User, unique=True)
    projects = models.ManyToManyField(Project, blank=True, help_text="Select the projects that this user is currently working on.")

И код модели для проекта:

class Project(models.Model):
    name = models.CharField(max_length=100, unique=True)
    application_identifier = models.CharField(max_length=100)
    type = models.IntegerField(choices=ProjectType)
    account = models.ForeignKey(Account)
    principle_investigator = models.ForeignKey(User)
    active = models.BooleanField()

И код администратора для просмотра:

class UserProfileInline(admin.TabularInline):
    model = UserProfile.projects.through
    extra = 0
    verbose_name = 'user'
    verbose_name_plural = 'users'

class ProjectAdmin(admin.ModelAdmin):
    list_display = ('name', 'application_identifier', 'type', 'account', 'active')
    search_fields = ('name', 'application_identifier', 'account__name')
    list_filter = ('type', 'active')
    inlines = [UserProfileInline,]
admin.site.register(Project, ProjectAdmin)
21
задан Dylan Klomparens 25 July 2012 в 20:30
поделиться