Как получить конкретное поле в сериализаторе с related_name с помощью Django rest
у меня есть модель ContactPhone и в модели ссылка на модель Lead с полем lead_id и ralated_name phones
class ContactPhone(models.Model):
phone_number = PhoneNumberField(blank=True, default='')
phone_type = models.CharField(
max_length=100,
blank=True,
choices=ContactPhoneInterface.phone_number_types,
default=PhoneNumbers.mobile.name
)
contact_id = models.ForeignKey(
Contact,
on_delete=models.CASCADE,
null=True,
related_name='phones_c'
)
lead_id = models.ForeignKey(
Lead,
on_delete=models.CASCADE,
null=True,
related_name='phones'
)
С помощью этого класса serilizer я получил id таблицы ContactPhone, но мне нужно получить поле phone_number в ContactPhone.
class LeadListSerializer(serializers.ModelSerializer):
class Meta:
model = Lead
fields = (
'id',
'full_name',
'responsible_id',
'phones',
'emails',
)
Пробовал разные варианты решения этой проблемы, но это не помогает. На скриншоте вы можете видеть ответ на данный момент, id ContactPhone
Если вы хотите вернуть список определенных полей из связанной модели, вы можете использовать serializers.SlugRelatedField
class LeadListSerializer(serializers.ModelSerializer):
phones = serializers.SlugRelatedField(
many=True,
read_only=True,
slug_field='phone_number'
)
class Meta:
model = Lead
fields = (
'id',
'full_name',
'responsible_id',
'phones',
'emails',
)