如何获取model -Django Rest框架中所有属性的列表



我试图得到所有的名字,电子邮件和电话的列表,而不编写类似的类与get()方法为他们每个人。是否有一种方法可以编写一个通用类来实现这个目的?我有意识地使用APIView和Serializer(而不是ModelSerializer)。这是我的代码。

views.py

class userInfoList(APIView):
def get(self, request, format=None):
users = userInfo.objects.all()
serializer = userInfoSerializer(users, many=True)
return Response(serializer.data)

serializers.py

from phonenumber_field.serializerfields import PhoneNumberField
from rest_framework import serializers
from .models import userInfo
class userInfoSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
name = serializers.CharField(max_length=50)
email = serializers.EmailField(max_length=70)
phone = PhoneNumberField()
def create(self, validated_data):
return userInfo.objects.create(**validated_data)

看看DRF中的通用视图- https://www.django-rest-framework.org/api-guide/generic-views/

可以为generic.ListView定义一个serializer_class,这样您就可以为您的模型拥有一个基本序列化器,以及三个具有您感兴趣的字段的子序列化器:


class BaseSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
name = serializers.CharField(max_length=50)
email = serializers.EmailField(max_length=70)
phone = PhoneNumberField()
...
# Here is your sub-serializer
class EmailSerializer(BaseSerializer):
class Meta:
fields = ["email"]
# Here is your separate view for retrieving only emails:
class FetchEmailsView(generic.ListView):
serializer_class = EmailSerializer
queryset = userInfo.objects.all()

最新更新