1

When I am injecting values on useMutation it gives me Error 400 140. The data types does match. In appointment_booking argument, I am passing the its ID as a reference on the other table. Here is my Schema

class CreateVideoConsultation(graphene.Mutation):
    id = graphene.Int()
    client = graphene.String()
    veterinarian = graphene.String()
    appointment_booking = graphene.Int()

    class Arguments:
        client = graphene.String()
        veterinarian = graphene.String()
        appointment_booking = graphene.Int()

    def mutate(self, info, client, veterinarian, appointment_booking):
        client_username = Client.objects.get(username = client)
        veterinarian_username = Veterinarian.objects.get(username = veterinarian)
        appointment_booking_id = Appointment_Booking.objects.get(id = appointment_booking)
        video_consultation = Video_Consultation(client = client_username, veterinarian = veterinarian_username, appointment_booking = appointment_booking_id)
        video_consultation.save()

        return CreateVideoConsultation(id = video_consultation.id, client = client_username, veterinarian = veterinarian_username, appointment_booking = appointment_booking_id)

class Mutation (graphene.ObjectType):
     create_video_consultation = CreateVideoConsultation.Field()
schema = graphene.Schema(query = Query, mutation = Mutation)

Here is my model

class Video_Consultation(models.Model):
    client = models.ForeignKey('Client', on_delete = models.DO_NOTHING)
    veterinarian = models.ForeignKey('Veterinarian', on_delete = models.DO_NOTHING)
    appointment_booking = models.ForeignKey('Appointment_Booking', on_delete = models.DO_NOTHING)
    
    def __str__(self):
        return str(self.client)

Here is my mutation in Graphiql

mutation{
  createVideoConsultation(client:"GGGG",veterinarian:"Peppermint",appointmentBooking:29){
    id
    client
    veterinarian
    appointmentBooking
  }
}

{
  "errors": [
    {
      "message": "int() argument must be a string, a bytes-like object or a real number, not 'Appointment_Booking'"
    }
  ],
  "data": {
    "createVideoConsultation": {
      "id": 7,
      "client": "GGGG",
      "veterinarian": "Peppermint",
      "appointmentBooking": null
    }
  }
}

It returns an error with null appointment_booking enter image description here

But when look at the django admin the data created appears

Here my gql

export const CREATE_VIDEO_CONSULTATION = gql`
mutation createVideoConsultation($client:String!,$veterinarian:String!,$appointmentBooking:Int!){
  createVideoConsultation(client:$client,veterinarian:$veterinarian,appointmentBooking:$appointmentBooking){
    id
    client
    veterinarian
    appointmentBooking
  }
}
`;

and Here is my useMutation Hook

const [CreateVideoConsultation] = useMutation(CREATE_VIDEO_CONSULTATION);
CreateVideoConsultation({
                variables:{
                    client: sched.appointmentBooking.client.username,
                    veterinarian: sched.appointmentBooking.veterinarian.username,
                    appointment_booking: parseInt(sched.appointmentBooking.id)
                }
            })

These are the preview of errors that I am getting enter image description here

enter image description here

1 Answers1

1

It was my mistake I forgot that all of the snake case variables that I have use in graphene mutation becomes camel case in apollo. For example create_video_consultation becomes createVideoConsultation...