0
Я только что внедрил метод create
класса ModelViewSet. В этой функции, я буду создавать новый объект Event
, и добавить его в ManyToManyField events
другого объекта Calendar
, Вот мой код:Как добавить manytomanyfield с 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)
это просто поднимем ниже исключения
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
Как исправить Эта проблема?
это работает, большое спасибо. Еще один вопрос: мне нужно «calendar.save()» после операции «добавить»? Я не уверен в этом –
Нет, вам не нужно вызывать 'save', после' add' он должен быть уже связан. – beezz