Django Rest Framework Nested Relationship
I'm new in using Django, I need your help So, I created a model like this models.py from django.db import models # Create your models here. class Pegawai(models.Model): name
Solution 1:
use serializers.CharField.
classBarangSerializer(serializers.ModelSerializer):
pegawali=serializers.CharField(source="pegawali.name")
classMeta:
model = Barangfields= (
'pegawai',
'nama_barang',
'harga_barang',
)
Solution 2:
Method-1
Since you are defined __str__()
method in your Pegawai
model, you can use StringRelatedField(...)
classBarangSerializer(serializers.ModelSerializer):
pegawai = serializers.StringRelatedField()
classMeta:
model = Barangfields= (
'pegawai',
'nama_barang',
'harga_barang',
)
Method-2
use CharField
classBarangSerializer(serializers.ModelSerializer):
pegawai = serializers.CharField(source='pegawai.name')
classMeta:
model = Barangfields= (
'pegawai',
'nama_barang',
'harga_barang',
)
UPDATE-1
To solve issues while creation of model objects, override the to_representation()
method
classBarangSerializer(serializers.ModelSerializer):classMeta:
model = Barang
fields = (
'pegawai',
'nama_barang',
'harga_barang',
)
defto_representation(self, instance):
rep = super().to_representation(instance)
rep['pegawai'] = instance.pegawai.name
return rep
Solution 3:
You can change the fields value in serializer with DRF RelatedField:
classBarangSerializer(serializers.ModelSerializer):
pegawai = serializers.RelatedField(source='pegawai.name', read_only=True)
classMeta:
model = Barangfields= (
'pegawai',
'nama_barang',
'harga_barang',
)
Post a Comment for "Django Rest Framework Nested Relationship"