gpt4 book ai didi

python - 从 Django 获取自定义剩余数据

转载 作者:太空宇宙 更新时间:2023-11-03 17:16:56 24 4
gpt4 key购买 nike

我使用 Django 作为服务器端,使用 Angular 作为客户端。

我想从我的 django Rest api 后端获取数据。我看到了很多关于从现有模块中获取数据的教程。但是如果我想检索多个模块组合的数据怎么办?

例如,我有两个模块“预订”和“俱乐部”。我想检索包含来自这两个模块的数据的 json 对象,用于特定的俱乐部 ID。

模块 -

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,考虑到每个 View 集都被映射到模型/序列化器的事实,我应该如何使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com