Tengo un campo de modelo de Django que me gustaría alinear. El campo es una relación de muchos a muchos. Entonces hay "Proyectos" y "Perfiles de usuario". Cada perfil de usuario puede seleccionar cualquier cantidad de proyectos.Interfaz de administración de Django: utilizando horizontal_filter con el campo en línea ManyToMany
Actualmente, tengo la vista en línea "tabular" funcionando. ¿Hay alguna forma de tener un "filtro horizontal" para que pueda agregar y eliminar proyectos fácilmente desde un perfil de usuario?
Consulte la imagen adjunta para ver un ejemplo.
Aquí está el código de modelo para el perfil de usuario:
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.")
Y el código modelo para un proyecto:
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()
Y la clave de administrador para la vista:
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)
Muchas gracias Chris! ¡Esto funcionó como un encanto la primera vez que lo intenté! –
Gracias, eres el hombre. – whooot
Una gran solución, funcionó muy bien para mí. – Blackeagle52