I am trying to get all the data associated with this interest_category serializer. This is what I am currently getting:
{
"project_title": "Dogs",
"project_description": "and cats",
"interest_category": [
4,
7
],
"created_by": 1,
"created_at": "2022-09-17T04:31:40.884357Z",
"updated_at": "2022-09-17T04:31:40.884357Z"
},
What I am trying to get:
{
"project_title": "Dogs",
"project_description": "and cats",
"interest_category": [
{
"id": 4,
"interest_name": "Test"
},
{
"id": 7,
"interest_name": "Business"
}
],
"created_by": 1,
"created_at": "2022-09-17T04:31:40.884357Z",
"updated_at": "2022-09-17T04:31:40.884357Z"
},
The issue I am having is if I use the below code, I cannot get the interest_category "interest_name" and only have the IDs displayed in a GET request:
class InterestSerializer(serializers.ModelSerializer):
interest_name = serializers.CharField()
class Meta:
model = Interests
fields = ('id', 'interest_name')
class ProjectsSerializer(serializers.ModelSerializer):
interest_category = serializers.PrimaryKeyRelatedField(
many=True, read_only=True
)
class Meta:
model = Project
fields = [
'project_title',
'project_description',
'interest_category',
'created_by',
'created_at',
'updated_at',
]
def create(self, validated_data):
project_category = validated_data.pop("interest_category", None)
project_create = Project.objects.create(**validated_data)
if project_category:
project_create.interest_category.set(project_category)
return project_create
I have tried using this to GET the data and I can, however when I use this code, I cannot write and set the interest_category, it will just be blank:
class InterestSerializer(serializers.ModelSerializer):
interest_name = serializers.CharField()
class Meta:
model = Interests
fields = ('id', 'interest_name')
class ProjectsSerializer(serializers.ModelSerializer):
interest_category = InterestSerializer(
many=True, read_only=True
)
class Meta:
model = Project
fields = [
'project_title',
'project_description',
'interest_category',
'created_by',
'created_at',
'updated_at',
]
def create(self, validated_data):
project_category = validated_data.pop("interest_category", None)
project_create = Project.objects.create(**validated_data)
if project_category:
project_create.interest_category.set(project_category)
return project_create
If I use one or the other, I cannot POST the interest_category or I cannot GET the interest_category. How can I make it so I can get the data that I need to GET and POST the request with the same serializer. Any and all help is greatly appreciated!