how to insert values into mysql database through django restapi

Viewed 449

I am going through some trouble lately, I have created 2 tables which are User and Phones

models.py

from django.db import models

class User(models.Model):
    userid = models.AutoField(primary_key=True,default=None)
    name = models.CharField(max_length= 100)
    age = models.IntegerField()
    class Meta:
        db_table = 'user'

class Phones(models.Model):
    phoneId = models.AutoField(primary_key=True,default=None)
    userid = models.IntegerField(null=False)
    numbers = models.CharField(max_length = 15, null=True)
    phonesCountryCode = models.CharField(max_length=5,null=True)
    class Meta:
        db_table = 'phones'

I want to send a post request like this :

 "User": [
        {
            "name": "abc",
            "age": 100"
        },
        {
            "name": "pqr",
            "age": 50
        },
        {
            "name": "xyz",
            "age": 80
        }
    ],
 "Phones": [
         {
           "numbers": "65452124",
           "phonesCountryCode": "+93"
          },
          {
           "numbers": "45215124",
           "phonesCountryCode": "+93"
          }
     ]

multiple data can be added into both databases. I have created a view and tried to add data like that but failed

views.py :

lass UpdateAll(APIView):
    def post(self, request ):
        userid = User.objects.latest('userid').userid
        name = request.data.get('name')
        age = request.data.get('age')
        numbers = request.data.get('numbers')
        phonesCountryCode = request.data.get('phonesCountryCode')
        
        User_Serializer = UserSerializer(data={"name":name,"age":age})
        if User_Serializer.is_valid(raise_exception=True):
            User_Serializer.save()
        
        Phone_Serializer = PhoneSerializer(data={"userid":userid,"numbers":numbers,"phonesCountryCode":phonesCountryCode})
        if Phone_Serializer.is_valid(raise_exception=True):
            Phone_Serializer.save()
        return Response({'status': 'Success'})

finaly serializer.py

class UserSerializer(serializers.ModelSerializer):
    name=serializers.CharField(required=True)
    age = serializers.IntegerField(required=True)
    class Meta:
        model = User
        fields= '__all__'


class PhoneSerializer(serializers.ModelSerializer):
    userid = serializers.IntegerField(required=True)
    numbers = serializers.CharField(max_length = 15)
    phonesCountryCode = serializers.CharField(max_length=5)
    class Meta:
        model = Phones
        fields= '__all__'

please help me to add multiple data into database

1 Answers
class UpdateAll(ApiView):

     data = request.data
     user_data = data['User']

     for user in user_data:
         new_user = UserSerializer(data=user)
         if new_user.is_valid():
            new_user.save()

     phone_data = data['Phones']

     for phone in phone_data:
         new_phone = PhoneSerializer(data=phone)
         if new_phone.is_valid():
            new_phone.save()

    return Response({'status':200,'message':'success'})
Related