¿Django filtra muchos a muchos campos en admin?

Tengo tres objetos:

Thing some fields Bucket things = models.ManyToManyField(Thing) User buckets = models.ManyToManyField(Bucket) things = models.ManyToManyField(Thing) 

Al editar mi campo “Bucket” en el administrador, quiero poder seleccionar Cosas, pero solo aquellas que se encuentran en la lista de “Cosas” en el usuario que está conectado actualmente.

¿Cómo puedo hacer eso? En otras palabras, ¿cómo puedo filtrar la lista de cosas en el administrador de Bucket?

Muchas gracias por adelantado por su ayuda.

Lea los documentos :

 class BucketAdmin(admin.ModelAdmin): def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == "things": kwargs["queryset"] = Things.objects.filter(...) return super(BucketAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) 

Hay un formfield_for_manytomany . El uso es similar a la respuesta dada por defuz.

 ModelAdmin.formfield_for_manytomany(db_field, request, **kwargs)¶ 

Al igual que el método formfield_for_foreignkey , el método formfield_for_manytomany se puede anular para cambiar el campo de formulario predeterminado para un campo de muchos a muchos. Por ejemplo, si un propietario puede tener varios automóviles y los automóviles pueden pertenecer a múltiples propietarios, una relación de muchos a muchos, podría filtrar el campo de la clave externa del Coche para mostrar solo los autos que son propiedad del Usuario:

 class MyModelAdmin(admin.ModelAdmin): def formfield_for_manytomany(self, db_field, request, **kwargs): if db_field.name == "cars": kwargs["queryset"] = Car.objects.filter(owner=request.user) return super(MyModelAdmin, self).formfield_for_manytomany(db_field, request, **kwargs) 

Es posible con django-selectable o django-autocomplete-light .