Django RF ModelSerializer получить userid текущего пользователя

Я хочу перенести все мои методы create, update из моих представлений в serializer.py, я читал, чтобы ваши представления были тонкими, а serializer толстым.

class APIClerkView(generics.ListCreateAPIView):
permission_classes = [IsAuthenticated]
serializer_class = ClearanceItemSerialize

  def perform_create(self, serializer):
     serializer.save(recorded_by=self.request.user.userid)

Здесь у меня есть простой create, который сохраняет текущий userid пользователя в recorded_by, Как я могу сделать это в моем ModelSerializer

Edit: Для моего метода обновления я использовал instance.resolve и т.д... как я могу заставить это работать, если есть два возврата instance и super().create(validated_data)

    def update(self, instance, validated_data):
    instance.resolve = 'True'
    instance.resolve_date = timezone.now()
    validated_data.resolve_by = self.context["request"].user.userid 
    

    TransactionLog.objects.create(cl_itemid=ClearanceItem.objects.get(cl_itemid=instance.cl_itemid),
      trans_desc="Resolve Clearance Item",
      trans_recorded=timezone.now())
    return instance
    return super().create(validated_data)

Просто переопределите create(...) метод сериализатора

class ClearanceItemSerialize(serializers.ModelSerializer):
    # other fields and meta
    def create(self, validated_data):
        # attach the user to the validated data
        validated_data["recorded_by"] = self.context["request"].user
        return super().create(validated_data)
Вернуться на верх