What i am doing is django 2 project call api to django 1 project to book an appointment in Appointment
table and save the details into BookAppt
table.
I don't know what is the problem as i did say same post with the same value to that BookAppt table API and it works normally. But when saving using the API call, it gave me this error.
{"patientId":["This field is required."]}.
I have no idea why as i did put in the patientId field. Please help as i have been stuck at this part for 2 days now.
Here is my code:
Do note that it is django 2 calling to django 1
model.py
django 1
class Appointments (models.Model): patientId = models.IntegerField() clinicId = models.CharField(max_length=10) date = models.DateField() time = models.TimeField() created = models.DateTimeField(auto_now_add=True) ticketNo = models.IntegerField() STATUS_CHOICES = ( ("Booked", "Booked"), ("Done", "Done"), ("Cancelled", "Cancelled"), ) status = models.CharField(max_length=20, choices=STATUS_CHOICES, default="Booked")
django 2
class MyUser(AbstractUser): userId = models.AutoField(primary_key=True) gender = models.CharField(max_length=6, blank=True, null=True) nric = models.CharField(max_length=9, blank=True, null=True) birthday = models.DateField(blank=True, null=True) birthTime = models.TimeField(blank=True, null=True) class BookAppt(models.Model): clinicId = models.CharField(max_length=20) patientId = models.ForeignKey(MyUser, on_delete=models.CASCADE) scheduleTime = models.DateTimeField() ticketNo = models.CharField(max_length=5) status = models.CharField(max_length=20)
serializer
django 1
class AppointmentsSerializer(serializers.ModelSerializer): class Meta: model = Appointments fields = ('id', 'patientId', 'clinicId', 'date', 'time', 'created', 'ticketNo', 'status')
django 2
class MyUserSerializer(serializers.ModelSerializer): class Meta: model = MyUser fields = ('userId', 'username', 'email', 'first_name', 'last_name', 'gender', 'nric', 'birthday', 'birthTime') read_only_fields = ('userId',) class BookApptSerializer(serializers.ModelSerializer): patientId = MyUserSerializer(many=False) class Meta: model = BookAppt fields = ('id', 'patientId', 'clinicId', 'scheduleTime', 'ticketNo', 'status')
view.py
django 1
class AppointmentsViewSet(viewsets.ModelViewSet): permission_classes = [AllowAny] queryset = Appointments.objects.all() serializer_class = AppointmentsSerializer
django 2
@csrf_exempt def my_django_view(request): if request.method == 'POST': r = requests.post('http://127.0.0.1:8000/api/makeapp/', data=request.POST) else: r = requests.get('http://127.0.0.1:8000/api/makeapp/', data=request.GET) if r.status_code == 201 and request.method == 'POST': data = r.json() patient = request.data['patientId'] patientId = MyUser.objects.get(id=patient) saveget_attrs = { "patientId": patientId, "clinicId": data["clinicId"], "scheduleTime": data["created"], "ticketNo": data["ticketNo"], "status": data["status"], } saving = BookAppt.objects.create(**saveget_attrs) return HttpResponse(r.text) elif r.status_code == 200: # GET response return HttpResponse(r.json()) else: return HttpResponse(r.text) class BookApptViewSet(viewsets.ModelViewSet): permission_classes = [AllowAny] queryset = BookAppt.objects.all() serializer_class = BookApptSerializer
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/b0dc2257-f4e6-4775-83a9-f8c560f2f975%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment