Tengo un objeto con una relación muchos a muchos con otro objeto.
En el Administrador de Django esto da como resultado una lista muy larga en un cuadro de selección múltiple.Filtro Cuadro ManyToMany en Django Admin
Me gustaría filtrar la relación ManyToMany, así que solo busco categorías disponibles en la ciudad que el cliente haya seleccionado.
¿Esto es posible? ¿Tendré que crear un widget para eso? Y si es así, ¿cómo copio el comportamiento del campo estándar ManyToMany, ya que también me gustaría la función filter_horizontal?
Estos son mis modelos simplificados:
class City(models.Model):
name = models.CharField(max_length=200)
class Category(models.Model):
name = models.CharField(max_length=200)
available_in = models.ManyToManyField(City)
class Customer(models.Model):
name = models.CharField(max_length=200)
city = models.ForeignKey(City)
categories = models.ManyToManyField(Category)
Noté que después de agregar este código en un proyecto, tengo que el cuadro de opciones seleccionado (estaría bajo las categorías elegidas elegidas en su ejemplo) está vacío incluso después de seleccionar una opción del campo 'Categorías disponibles'. ¿Me perdí algo en la implementación de esto? – Silfheed
Reducción adicional mediante la comprensión de listas: self.fields ['categories']. Widget.choices = [(choice.id, choice.name) para elegir en wtf] –
¿qué es 'cat_id'? – Sevenearths