Возврат дополнительных полей вместе с полями модели в JSON - Django - PullRequest
1 голос
/ 10 марта 2020

Я использую Modelserializer для сериализации данных. В одном из случаев я должен отправить некоторые дополнительные поля, кроме полей модели, в пользовательский интерфейс. Как я могу это сделать? Ниже представлен мой код -

Моя модель -

class Group(models.Model):
    groupID = models.AutoField(primary_key=True, db_index=True)
    groupName = models.CharField(verbose_name="Name", max_length=30)
    sectionID = models.ForeignKey(Section, on_delete=models.PROTECT, db_column='sectionID')

Мой сериализатор -

class GroupSerializer(serializers.ModelSerializer):
    class Meta:
        model = Group
        fields = ['groupID', 'groupName', 'sectionID']

Мой вид -

@api_view(['GET'])
@permission_classes((permissions.IsAuthenticated,))
def getGroupInfo(request):
   groups = models.Group.objects.all()
   for group in groups:
       group.logical_fied = True if <Custom condition>

   serializer = GroupSerializer(groups, many = True)
   return Response(serializer.data)

Ожидаемый ответ включен UI

[{
   "groupID":1,
   "groupName":"A",
   "sectionID":1,
   "logical_field":True
}]

Ответ, который я получаю

[{
   "groupID":1,
   "groupName":"A",
   "sectionID":1
}]

В моем serializer.data я не получаю логическое поле в пользовательском интерфейсе, поскольку оно не определено в GroupSerializer. Есть ли способ добиться этого?

1 Ответ

2 голосов
/ 10 марта 2020
from rest_framework.serializers import (ModelSerializer, BooleanField)

class GroupSerializer(ModelSerializer):
 logical_field = BooleanField(default=True)
 class Meta:
    model = Group
    fields = ['groupID', 'groupName', 'sectionID', 'logical_field']
...