python - Django REST Framework : "This field is required." with required=False and unique_together -


i want save simple model django rest framework. requirement uservote.created_by set automatically within perform_create() method. fails exception:

{     "created_by": [         "this field required."     ] } 

i guess because of unique_together index.

models.py:

class uservote(models.model):     created_by = models.foreignkey(user, related_name='uservotes')     rating = models.foreignkey(rating)      class meta:         unique_together = ('created_by', 'rating') 

serializers.py

class uservoteserializer(serializers.modelserializer):     id = serializers.integerfield(read_only=true)     created_by = userserializer(read_only=true)      class meta:         model = uservote         fields = ('id', 'rating', 'created_by') 

views.py

class uservoteviewset(viewsets.modelviewset):     queryset = uservote.objects.all()     serializer_class = uservoteserializer     permission_classes = (iscreatedbyorreadonly, )      def perform_create(self, serializer):         serializer.save(created_by=self.request.user) 

how can save model in drf without having user supply created_by , instead set field automatically in code?

thanks in advance!

i had similar problem , solved explicitly creating , passing new instance serializer. in uservoteviewset have substitute perform_create create:

 def create(self, request, *args, **kwargs):     uv = uservote(created_by=self.request.user)     serializer = self.serializer_class(uv, data=request.data)     if serializer.is_valid():         serializer.save()         return response(serializer.data, status=status.http_201_created)     else:         return response(serializer.errors, status=status.http_400_bad_request) 

Comments

Popular posts from this blog

ruby - Trying to change last to "x"s to 23 -

jquery - Clone last and append item to closest class -

c - Unrecognised emulation mode: elf_i386 on MinGW32 -