Django Python将json安排到单个节点中
我使用的是一个遗留数据库,它有2条记录,每条记录中的数据包含以下值:姓名、电子邮件、公司、电话 这两条记录包含相同的数据值,但电话的值不同 在JSON中检索它们时,我得到以下输出:Django Python将json安排到单个节点中,python,django,django-models,django-rest-framework,django-views,Python,Django,Django Models,Django Rest Framework,Django Views,我使用的是一个遗留数据库,它有2条记录,每条记录中的数据包含以下值:姓名、电子邮件、公司、电话 这两条记录包含相同的数据值,但电话的值不同 在JSON中检索它们时,我得到以下输出: "results": [ { "Name": "Mack", "Email": "Mack@email.com", "Company": "Company Name", "Phone": "12345678
"results": [
{
"Name": "Mack",
"Email": "Mack@email.com",
"Company": "Company Name",
"Phone": "123456789"
},
{
"Name": "Mack",
"Email": "Mack@email.com",
"Company": "Company Name",
"Phone": "1111111"
}
]
我的问题:正如您所看到的,上面的输出中存在一些重复数据,那么是否有一种方法可以将JSON输出安排为以下内容:
"results": [
{
"Name": "Mack",
"Email": "Mack@email.com",
"Company": "Company Name",
"Phone": "123456789"
"Phone 2": "1111111"
}
]
以下是Views.py文件的代码:
class DataView(viewsets.ModelViewSet):
queryset = DataList.objects.all()
serializer_class = DataSerializer
class DataSerializer(serializers.ModelSerializer):
data_details = serializers.SerializerMethodField()
class Meta:
model = DataList
fields = 'data_details'
def get_data_details(self, obj):
return [{
'name': obj.name,
'email': obj.email,
'company': obj.company,
'phone': obj.phone,
}]
class Data(models.Model):
name = models.CharField(db_column='name', primary_key=True, max_length=50)
email = models.CharField(db_column='email', max_length=50)
company = models.CharField(db_column='company', max_length=100)
phone= models.TextField(db_column='phone')
class Meta:
managed = False
db_table = 'data_table'
以下是Serializers.py文件的代码:
class DataView(viewsets.ModelViewSet):
queryset = DataList.objects.all()
serializer_class = DataSerializer
class DataSerializer(serializers.ModelSerializer):
data_details = serializers.SerializerMethodField()
class Meta:
model = DataList
fields = 'data_details'
def get_data_details(self, obj):
return [{
'name': obj.name,
'email': obj.email,
'company': obj.company,
'phone': obj.phone,
}]
class Data(models.Model):
name = models.CharField(db_column='name', primary_key=True, max_length=50)
email = models.CharField(db_column='email', max_length=50)
company = models.CharField(db_column='company', max_length=100)
phone= models.TextField(db_column='phone')
class Meta:
managed = False
db_table = 'data_table'
以下是models.py文件的代码:
class DataView(viewsets.ModelViewSet):
queryset = DataList.objects.all()
serializer_class = DataSerializer
class DataSerializer(serializers.ModelSerializer):
data_details = serializers.SerializerMethodField()
class Meta:
model = DataList
fields = 'data_details'
def get_data_details(self, obj):
return [{
'name': obj.name,
'email': obj.email,
'company': obj.company,
'phone': obj.phone,
}]
class Data(models.Model):
name = models.CharField(db_column='name', primary_key=True, max_length=50)
email = models.CharField(db_column='email', max_length=50)
company = models.CharField(db_column='company', max_length=100)
phone= models.TextField(db_column='phone')
class Meta:
managed = False
db_table = 'data_table'
谢谢。合并应该在什么时候进行?如果有任何重复的姓名,或者如果有重复的姓名和电子邮件,或者只有姓名、电子邮件和公司重复?您可能需要查看
dict.update()
函数。但是,这将替换您的手机值,因此如果您使用它,您必须确保您的钥匙具有不同的名称。嗨@CalebGoodman,重复数据将一直发生,因此如果可能,请立即合并Hi@JammyDodger,我在Django还是新手,那么我可以知道在哪里使用它吗?在哪个文件中?