从Django Rest框架中的值创建嵌套JSON

2024-09-30 10:34:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Django和DjangoRest框架非常陌生,这是我关于堆栈溢出的第一个问题,请耐心听我说

我正在尝试创建一个Django Rest API,它可以处理在线抽奖的条目。因此,每个条目都有详细信息,如姓名、电子邮件和以空格分隔的数字形式表示抽奖条目的字符串(例如:“12,23,34,45,56,67”)。 到目前为止,我已经能够做一些基础工作,创建一个简单的模型、序列化程序和视图

我需要的是创建一个类似于

{
    "entry" : "12,23,34,45,56,67",
    "name" : "SampleName",
    "email" : "sample@sample.com",
    "values" : [
        "one" : 12,
        "two" : 23,
        "three" : 34,
        "four" : 45,
        "five" : 56,
        "six" : 67
    ]
}

models.py

class EntryModel(models.Model):
    entry = models.CharField(null=False, max_length=17)
    name  = models.CharField(null=False, max_length=100)
    email = models.EmailField(null=False)

序列化程序.py

class EntrySerializer(serializers.ModelSerializer):

    class Meta:
        model = EntryModel
        fields = ['entry', 'name', 'email']

views.py

class EntryViews(viewsets.ModelViewSet):
    queryset = EntryModel.objects.all()
    serializer_class = EntrySerializer

Tags: sampledjangonamepy程序false序列化models
1条回答
网友
1楼 · 发布于 2024-09-30 10:34:44

我猜您希望将entry字段扩展为values字段

在序列化程序中,可以使用SerializerMethodField

class EntrySerializer(serializers.ModelSerializer):
    values = serializers.SerializerMethodField()
    class Meta:
        model = EntryModel
        fields = ['entry', 'name', 'email', 'values']
    
    def get_values(self, obj):
        #here object is the EntryModel instance, you can access the entry field with obj.entry, transform into required format and return

相关问题 更多 >

    热门问题