Reputation: 136
I am trying to query values from model, I want to include manytomanyfield values in query but now I am getting some numbers instead of values, I am using modelviewset in views.py file.
I know what have done is wrong, How to do this in right way
models.py
class TrainingDetailsViewSet(viewsets.ModelViewSet):
queryset = TrainingDetails.objects.all().order_by('Name')
serializer_class = TrainingDetailsSerializer
views.py
class TrainingDetails(models.Model):
Code = models.CharField(max_length=60)
Name = models.CharField(max_length=60)
TrainerName = models.ManyToManyField(TrainerDetails, blank=True, related_name='trainer')
Agenda = models.FileField()
Date = models.ManyToManyField(Date,blank=True, editable= True, related_name='date')
Data = models.ManyToManyField(TrainingData, blank=True, related_name='data')
def __str__(self):
return self.Name
serializers.py
class TrainingDetailsSerializer(serializers.ModelSerializer):
class Meta:
model = TrainingDetails
fields = ('Code', 'Name', 'TrainerName', 'Agenda' , 'Date' , 'Data' )
I'm getting in response,
[
{
"Code": "TRA123",
"Name": "something",
"TrainerName": [
5,
6
],
"Agenda": "something",
"Date": [
2
],
"Data": [
2
]
}
]
I want,
[
{
"Code": "TRA123",
"Name": "something",
"TrainerName": [
'john' , 'james'
],
"Agenda": "something",
"Date": [
'19/10/2020'
],
"Data": [
'something'
]
}
]
``
Upvotes: 0
Views: 47
Reputation: 3624
You are looking for the StringRelatedField, for example:
class TrainingDetailsSerializer(serializers.ModelSerializer):
TrainerName = serializers.StringRelatedField(many=True)
class Meta:
model = TrainingDetails
fields = ('Code', 'Name', 'TrainerName', 'Agenda' , 'Date' , 'Data' )
It should be noted that StringRelatedField
looks for the __str__
of the related model, in your case the TrainerDetails
.
Upvotes: 2