Моя база данных находится в MongoDb, и я использую Djongo.

Я пытаюсь сделать систему посещаемости во фронтенде Я получаю список пользователей, которые request.user может принимать участие в посещаемости, я использую CreateAPIView, но это не даст мне желаемого эффекта, так как я хочу, чтобы request.user мог переключаться между Absent, Present, и on_leave даже после того, как запись была создана на первом запросе

Я видел здесь вопросы и ответы о создании или обновлении, но не смог их использовать, поэтому буду признателен за любую помощь

это мой view.py

class AttendanceListCreateAPIView(CreateAPIView):
permission_classes = [IsTeacher_Student]
queryset = Attendance.objects.all()
serializer_class = AttendanceSerializer

def post(self, request, *args, **kwargs):
    user = request.user
    data = request.data

    serializer = AttendanceSerializer(data=data)
    if serializer.is_valid():
        data_user = serializer.validated_data['user']

       ## validation

    return Response({"message": "Something is wrong, maybe you have already taken attendance for this user"},
                    status=status.HTTP_400_BAD_REQUEST)

my serializer.py

class AttendanceSerializer(serializers.ModelSerializer):
     date = serializers.HiddenField(default=timezone.now)
     leave_reason = serializers.CharField(required=False, default="")

     class Meta:
          model = Attendance
          fields = ['user', 'presence', 'leave_reason', 'date']
          extra_kwargs = {
               'user': {'required': True},
               'presence': {'required': True},
               'leave_reason': {'required': False},
          }
         validators = [
               UniqueForYearValidator(
                    queryset=Attendance.objects.all(),
                    field='user',
                    date_field='date',
                    message=("You have already taken the attendance")
                )
              ]

     def create(self, validated_data):
           instance = Attendance.objects.create(
              user=validated_data['user'],
              presence=validated_data['presence'],
              leave_reason=validated_data['leave_reason'],
              date=validated_data['date'],
            )
           instance.save()
           return instance
<
Вернуться на верх