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
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)
}
})