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
Post a Comment