# ২২.৪ : পেশেন্ট মডেলের এপিআই তৈরী

আজকে আসো আমাদের আমাদের পেশেন্ট অ্যাপ এর api বানিয়ে ফেলবো। একদম সেম টু সেম কাজ। serializers.py নামে একটা ফাইল তৈরি করবো সেখানে নিচের কোড টা দিবো।

patient/serializers.py

```python
from rest_framework import serializers
from . import models

class PatientSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.Patient
        fields = '__all__'
```

তারপর views.py এ গিয়ে আমরা মডেল ভিউ সেট ইউজ করবো নিচের মত করে।

```python
from django.shortcuts import render
from rest_framework import viewsets
from . import models
from . import serializers

class PatientViewset(viewsets.ModelViewSet):
    queryset = models.Patient.objects.all()
    serializer_class = serializers.PatientSerializer
```

আর ফাইনালি আমাদের রাউটার বানাবো urls.py এ গিয়ে।

```python
from rest_framework.routers import DefaultRouter
from django.urls import path, include
from . import views
router = DefaultRouter() # amader router

router.register('list', views.PatientViewset) # router er antena
urlpatterns = [
    path('', include(router.urls)),
]
```

final output :&#x20;

<figure><img src="https://3753355949-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZjZRCk5NYynvfinzJmZE%2Fuploads%2F20O3NBdjdkadwjtTe9u6%2Fimage.png?alt=media&#x26;token=b7bdea07-70f5-45f9-a1ff-6dbff7a7d8e8" alt=""><figcaption></figcaption></figure>

আজকে আমরা এখানে একটা মজার জিনিস দেখবো এই পেশেন্ট মডেল এই। খেয়াল করে দেখো পেশেন্ট এর সাথে আমাদের user মডেল এর যে সম্পর্ক ছিল সেটার জন্যে আমাদের api তে user এর পাশে id নম্বর দেখতে পাচ্ছি যেটা আসলে user মডেল এ এই আইডি ওয়ালা ইউজার কে মিন করতেছে। আমরা চাই এখানে আইডি না দিয়ে ইউজার এর নাম দেখাক। সেজন্যে আমরা আজকে serializer এর মধ্যে relationship সম্পর্কে জানবো। অনেক টাইপ relationship থাকে সেটার মধ্যে আমরা আপাতত string সম্পর্কে জানবো। খেয়াল করে দেখো যে তুমি চাও user এর ইউজারনেম টা আসুক ইউজার আইডি এর বদলে সেজন্যে আমাদেরকে

```python
from rest_framework import serializers
from . import models

class PatientSerializer(serializers.ModelSerializer):
    user = serializers.StringRelatedField(many=False)
    class Meta:
        model = models.Patient
        fields = '__all__'
```

এভাবে দিতে হবে আর many=False রাখতে হবে কারণ patient এর সাথে user মডেল এর সম্পর্ক one to one। যদি one to many হতো বা many to many হতো তাইলে সেখানে many= True দিতাম আমরা।

final output :&#x20;

<figure><img src="https://3753355949-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZjZRCk5NYynvfinzJmZE%2Fuploads%2Fgp3nqndvYg8jqwEZ0L3D%2Fimage.png?alt=media&#x26;token=16731092-1be4-4530-a9dd-62984724ec1e" alt=""><figcaption></figcaption></figure>
