从 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
我是 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