How to push data in a model whose one column is a forign key Django Rest Framework?
Question:
I’m trying to assign data against specific user using DRF but getting some strange errors. I searched this problem a lot but not able to find any solution.
model.py
class Category(TrackingModels):
name =models.CharField(default='Learning',max_length=150,unique=True,null=False)
person=models.ForeignKey(to=User,on_delete=models.CASCADE)
def __str__(self):
return self.name
serializer.py
class CategorySerializer(ModelSerializer):
person = serializers.PrimaryKeyRelatedField(read_only=True)
class Meta:
model=Category
fields=('id','name','person')
views.py
class CategoryAPIView(CreateAPIView):
serializer_class=CategorySerializer
permission_classes=(IsAuthenticated,)
def post(self,request):
data={
"person":request.user.id,
"name":request.data.get('category')
}
serializer=CategorySerializer(data=data)
if serializer.is_valid():
serializer.save()
return Response({"message":"Category is created sucessfully!"},status=status.HTTP_201_CREATED)
return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)
I will really appreciate your answers.
regards,
I followed this solution but that didn’t fixed. I searched a lot on medium and other platforms but all in vein.
Answers:
You can use the below serializer:
#import
from django.contrib.auth import get_user_model
from rest_framework import serializers
UserModel = get_user_model()
class CategorySerializer(ModelSerializer):
person = serializers.SlugRelatedField(queryset=UserModel.objects.all(), slug_field="id")
class Meta:
model=Category
fields=('id','name','person')
I’m trying to assign data against specific user using DRF but getting some strange errors. I searched this problem a lot but not able to find any solution.
model.py
class Category(TrackingModels):
name =models.CharField(default='Learning',max_length=150,unique=True,null=False)
person=models.ForeignKey(to=User,on_delete=models.CASCADE)
def __str__(self):
return self.name
serializer.py
class CategorySerializer(ModelSerializer):
person = serializers.PrimaryKeyRelatedField(read_only=True)
class Meta:
model=Category
fields=('id','name','person')
views.py
class CategoryAPIView(CreateAPIView):
serializer_class=CategorySerializer
permission_classes=(IsAuthenticated,)
def post(self,request):
data={
"person":request.user.id,
"name":request.data.get('category')
}
serializer=CategorySerializer(data=data)
if serializer.is_valid():
serializer.save()
return Response({"message":"Category is created sucessfully!"},status=status.HTTP_201_CREATED)
return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)
I will really appreciate your answers.
regards,
I followed this solution but that didn’t fixed. I searched a lot on medium and other platforms but all in vein.
You can use the below serializer:
#import
from django.contrib.auth import get_user_model
from rest_framework import serializers
UserModel = get_user_model()
class CategorySerializer(ModelSerializer):
person = serializers.SlugRelatedField(queryset=UserModel.objects.all(), slug_field="id")
class Meta:
model=Category
fields=('id','name','person')