我正在使用Django作为服务器端,使用angular作为客户端。
我想从django rest api后端获取数据。
我看了很多关于从一个已经存在的模块中获取数据的教程。但是,如果我想检索包含多个模块的数据怎么办?
例如,我有两个模块Reservations和Clubs。我想从两个模块中获取包含特定俱乐部ID的数据的json对象。
模块-
class Club(models.Model):
name = models.CharField(max_length=1024)
image_path = models.CharField(max_length=1024)
class Reservation(models.Model):
club = models.ForeignKey('Club')
user = models.CharField(max_length=1024)
is_paid = models.BooleanField(default=False)
序列化器-
class ReservationSerializer(serializers.ModelSerializer):
class Meta:
model = Reservation
fields = ('club', 'user')
class ClubSerializer(serializers.ModelSerializer):
class Meta:
model = Club
fields = ('id', 'name', 'surfaces')
视图集-
class ReservationViewSet(generics.ListAPIView):
serializer_class = ReservationSerializer
queryset = Reservation.objects.all()
filter_backends = (filters.DjangoFilterBackend,)
filter_fields = ('id', 'club')
class ClubViewSet(generics.ListAPIView):
queryset = Club.objects.all()
serializer_class = ClubSerializer
filter_backends = (filters.DjangoFilterBackend,)
filter_fields = ('id', 'name')
因此,对于这个例子,我希望在获取此网址时-
http://127.0.0.1:8000/api/initial_data?club=2
它将运行执行一些逻辑的ViewSet,然后返回此格式的json-
{club_id: 2, reservations: {1:"John", 2:"Doe", 3:"Bob"} }
更笼统地说-如何返回给定URL参数的自定义json,其中包含来自多个模块的数据(返回客户端)?
编辑-如果我想返回一个简单的JSON,考虑到每个视图集都已映射到模型/序列化器的事实,该如何使用django DRF进行处理?
也许使用简单的JsonResponse ..?
最佳答案
您可以将一个序列化器定义为另一个序列化器中的字段
class ReservationSerializer(serializers.ModelSerializer):
...
class ClubSerializer(serializers.ModelSerializer):
reservations = ReservationSerializer(many=True, read_only=True)
...
现在,ClubSerializer将在每个俱乐部内返回预订
关于python - 从Django获取自定义的剩余数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33584296/