modelos.py
from django.db import models from django.contrib.auth.models import User class Element(models.Model): name = models.CharField(max_length=20) class Group(models.Model): user = models.ForeignKey(User) name = models.CharField(max_length=100) elements = models.ManyToManyField(Element) class Meta: unique_together = ('user', 'name')serializadores.py
class ElementSerializer(serializers.HyperlinkedModelSerializer): # group = serializers.ReadOnlyField(source='group.id') class Meta: model = Element fields = ('name') """ def save(self, group=None, *args, **kwargs): if group is not None: self.group = group super(ElementSerializer, self).save(*args, **kwargs) """ class GroupSerializer(serializers.HyperlinkedModelSerializer): elements = ElementSerializer(many=True) class Meta: model = Group fields = ('url', 'name', 'elements')vistas.py
class AddElement(APIView): def get(self, request, pk, format=None): serializer = ElementSerializer(context={'request': request}) return Response(serializer.data, status=status.HTTP_200_OK) def post(self, request, pk): group = DBHandler.get_group_from_id(pk) serializer = ElementSerializer(data=request.data, context={'request': request}) if not serializer.is_valid(): return Response(serializer.data, status=status.HTTP_400_BAD_REQUEST) serializer.save() # serializer.save(group = group) return Response({}, status=status.HTTP_201_CREATED)En mi opinión, me gustaría crear un elemento a partir de datos dados y luego asignar este elemento al grupo existente.
Intenté pasar el grupo como un parámetro de guardado del serializador, y funcionó bien (código comentado), pero no sé a dónde ir a continuación. ¿Cómo puedo obtener una instancia de Element de ElementSerializer? ¿O hay otra forma de resolver esto?