从 Django Rest Framework 中的值创建嵌套 JSON

Creating a nested JSON from a value in Django Rest Framework

我是 Django 和 DjangoRest 框架的新手,这是我关于 Stack overflow 的第一个问题,请多多包涵。

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

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

的JSON
{
    "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)

serializers.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

我猜您希望 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