0
Je viens d'implémenter la méthode create
d'une classe ModelViewSet. Dans cette fonction, je vais créer un nouvel objet Event
, et l'ajouter à ManyToManyField events
d'un autre objet Calendar
, voici mon code:Comment ajouter manytomanyfield avec django-rest-framework
def create(self, request, calendar_pk=None):
calendar = get_object_or_404(Calendar, guid=calendar_pk)
serializer = EventSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
# if remove this two lines, it works well
calendar.events.add(serializer)
calendar.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
il soulève juste au-dessous exception
IntegrityError
(1062, "Duplicate entry 'e1c4570899d149e8b093773feb208328-EventSerializer(data=<QueryDict' for key 'calendar_id'")
/usr/lib/python2.7/dist-packages/MySQLdb/connections.py in defaulterrorhandler, line 36
Comment fixer ce problème?
cela fonctionne, merci beaucoup. Une question de plus, ai-je besoin de 'calendar.save()' après l'opération 'add'? Je ne suis pas sûr à ce sujet –
Non, vous n'avez pas besoin d'appeler 'save', après' add' il devrait déjà être associé. – beezz