【发布时间】:2020-08-03 22:41:25
【问题描述】:
您好,我有以下两种型号
class IndexMaster(models.Model):
index_id = models.IntegerField(primary_key=True)
index_name = models.CharField(max_length=100)
index_on = models.CharField(max_length=10)
index_type = models.CharField(max_length=20)
def __str__(self):
return self.index_id
class Meta:
managed = True
db_table = 'index_master'
class IndexData(models.Model):
index = models.ForeignKey(IndexMaster, on_delete=models.CASCADE)
lifetime_high = models.FloatField()
lifetime_low = models.FloatField()
yearly_high = models.FloatField()
yearly_low = models.FloatField()
yesterdays_close = models.FloatField()
day_high = models.FloatField()
day_low = models.FloatField()
todays_open = models.FloatField()
lastvalue = models.FloatField()
change = models.FloatField()
percentchange = models.FloatField()
class Meta:
managed = True
db_table = 'index_data'
我的 serialiser.py 看起来像这样
from rest_framework import serializers
from .models import IndexData
class IndexSerializer(serializers.ModelSerializer):
class Meta:
model = IndexData
fields = ['index' ,'day_high', 'day_low', 'lastvalue', 'change', 'percentchange']
def to_representation(self, instance):
ret = super(IndexSerializer, self).to_representation(instance)
return ret
views.py 就像
class IndexList(generics.ListAPIView):
queryset = IndexData.objects.all()
serializer_class = IndexSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
def get_queryset(self):
query_params = self.request.query_params
indexID = query_params.get('index_id', None)
Q1 = Q(index_id = indexID)
return IndexData.objects.filter(Q1)
问题是当我点击 url 以获取 JSON 时,我得到以下响应
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"index": 3.0,
"day_high": 8867.2,
"day_low": 8725.25,
"lastvalue": 8746.85,
"change": -97.95,
"percentchange": -1.1
}
]
}
我想要的是从 IndexMaster 模型中包含 index_name、index_on 和 index_type.. 我如何实现这一目标? 我想要的 JSON 响应是
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"index": 3.0,
"index_name": "XXXX",
"index_on": "XXXX",
"index_type": "XXXX",
"day_high": 8867.2,
"day_low": 8725.25,
"lastvalue": 8746.85,
"change": -97.95,
"percentchange": -1.1
}
]
}
XXXX 被来自 IndexMaster 的实际值替换
【问题讨论】:
-
"index": 3.0或"index": 3?
标签: django django-models serialization django-rest-framework