241 votes

Comment ajouter plusieurs objets de relation ManyToMany à la fois dans Django ?

Basé sur Django doc, je devrais être capable de passer plusieurs objets à la fois à être ajouté à une relation manytomany, mais je reçois un

* TypeError: unhashable type: 'liste'

lorsque j'essaie de passer un django queryset enchassée dans une liste. Le passage d'un Queryset ou un ValuesListQueryset semble aussi un échec. Est-il un meilleur moyen que d'utiliser une boucle for ?

401voto

Yuji 'Tomita' Tomita Points 46106

Utilisation: object.m2mfield.add(*items) comme décrit dans la documentation:

add() accepte un nombre arbitraire d'arguments, pas une liste d'entre eux.

add(obj1, obj2, obj3, ...)

Afin d'élargir cette liste dans les arguments, utilisez *

add(*[obj1, obj2, obj3])

Addendum:

Django ne fait pas appel obj.save() pour chaque élément, mais utilise bulk_create(), au lieu de cela.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X