Получить набор запросов из другой модели в наборе запросов в Django - PullRequest
0 голосов
/ 26 июня 2018
class V(models.Model):
    title = models.CharField(max_length=100, blank=True, default='')
    doc = models.ForeignKey(D, on_delete=models.CASCADE, default='')
    upload_time = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ('upload_time',)

 class D(models.Model):
    name = models.CharField(max_length=100, blank=True, default='')

    def __str__(self):
        return self.name

в ModelViewSet Я написал так:

class index(viewsets.ModelViewSet):
    serializer_class = VSerializer
    queryset = V.objects.all()

Я получил эти данные через API

{
 "id": 1,
 "title": xxxxx
 "d_id": 8,
  ...
  ...
}

Однако я хочу, чтобы d_id был более конкретнымвот так:

{
 "id": 1,
 "title": xxxxx
 "d_id": {
     "id": 8,
     "name": xxx,
     ....
   }
...
...
}

Итак, данные в D-модели были выбраны через d_id = 8 и прикреплены к исходному набору запросов.

Как я могу это сделать?Нужна ваша помощь ...

1 Ответ

0 голосов
/ 26 июня 2018

Создайте сериализатор для вашей модели D.

class DSerializer(serializers.ModelSerializer):
    class Meta:
        model = D
        fields = ('field_1', 'field_2', 'field_3')

И в вашем VSerializer добавьте поле сериализатора следующим образом:

class VSerializer(serializers.ModelSerializer):
    d = DSerializer() # This will add D's fields in V's API.
    class Meta:
        model = V
        fields = ('field_1', 'field_2', 'field_3')

Прочтите эту документацию для получения более подробной информации. http://www.django -rest-framework.org / апи-гид / отношения /

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...