@MaxEpt

Как в django restframewrok вывести значение поля ForeignKey?

Добрый день! В django есть две модели:
class Services(models.Model):
    serviceID = models.AutoField(primary_key=True)
    serviceName = models.CharField('Название услуги', max_length = 30)
    def __str__(self):
        return self.serviceName
    class Meta:
        db_table = "services"

class Source(models.Model):
    sourceID = models.AutoField(primary_key = True)
    sourceName = models.CharField('Название источника', max_length = 30)
    def __str__(self):
        return self.sourceName
    class Meta:
        db_table = "sources"

И третья модель:
class Bid(models.Model):
    bidID = models.AutoField(primary_key=True)
    clientFio = models.CharField('ФИО Клиента', max_length=100)
    clientPhone = models.CharField('Телефон клиента', max_length=30)
    service = models.ForeignKey(Services, related_name='services')
    status = models.ForeignKey(Status)
    date = models.DateField('Дата заявки')
    dismisReason = models.TextField('Причина отказа', blank=True)

    class Meta:
        db_table = "bids"

Для модели Bid есть serializer:
class BidSerializer(serializers.ModelSerializer):
    class Meta:
        model = Bid
        fields = [
            'bidID',
            'clientFio',
            'clientPhone',
            'service',
            'status',
            'date',
            'dismisReason',
        ]

Отдается ID service и status. Как получать значение ? Не могу никак разобраться))
Вот код viewset:
class BidViewSet(viewsets.ModelViewSet):
    queryset = Bid.objects.all()
    serializer_class = BidSerializer
  • Вопрос задан
  • 393 просмотра
Решения вопроса 1
@d1skort
junior
Возможно, Вам необходимо поле StringRelatedField().

class BidSerializer(serializers.ModelSerializer):
    service = serializers.StringRelatedField()
    status = serializers.StringRelatedField()
    class Meta:
        model = Bid
        fields = [
            'bidID',
            'clientFio',
            'clientPhone',
            'service',
            'status',
            'date',
            'dismisReason',
        ]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы