0
我的序列化程序沒有返回模型中的所有字段。只是嵌套的序列化程序。Django序列化程序不返回所有字段
serializer.py
class IndicatorSerializer(serializers.ModelSerializer):
class Meta:
model = Indicator
class QuoteSerializer(serializers.ModelSerializer):
class Meta:
model = Quote
class VWAPSerializer(serializers.ModelSerializer):
vwap = serializers.SerializerMethodField()
class Meta:
model = Quote
fields = ('date','open','high','low','close','vwap',)
def get_vwap(self, obj):
indicators = Indicator.objects.filter(quote__in = obj)
return IndicatorSerializer(indicators,many=True).data
views.py
def get_vwap(request):
"""
List all vwap for a date
"""
quotes = Quote.objects.filter(date__gt = '2016-05-05')
serializer = VWAPSerializer(quotes)
return Response(serializer.data)
models.py
class Quote(models.Model):
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now_add=True)
symbol = models.ForeignKey(Symbol, on_delete=models.CASCADE)
date = models.DateField(blank=True, null=True)
open = models.DecimalField(max_digits=15, decimal_places=2, null=True, blank=True)
high = models.DecimalField(max_digits=15, decimal_places=2, null=True, blank=True)
low = models.DecimalField(max_digits=15, decimal_places=2, null=True, blank=True)
close = models.DecimalField(max_digits=15, decimal_places=2, null=True, blank=True)
last = models.DecimalField(max_digits=15, decimal_places=2, null=True, blank=True)
prevclose = models.DecimalField(max_digits=15, decimal_places=2, null=True, blank=True)
tottrdqty = models.DecimalField(max_digits=15, decimal_places=2, null=True, blank=True)
tottrdval = models.DecimalField(max_digits=15, decimal_places=2, null=True, blank=True)
total_trades = models.DecimalField(max_digits=15, decimal_places=2, null=True, blank=True)
class Meta:
index_together = [
["symbol", "date"],
]
class Indicator(models.Model):
quote = models.ForeignKey(Quote, on_delete=models.CASCADE)
indicator = models.ForeignKey(IndicatorDefinition, on_delete=models.CASCADE, db_index=True)
value = models.DecimalField(max_digits=15, decimal_places=2, null=True, blank=True)
class Meta:
unique_together = ('quote', 'indicator')
響應
"vwap": [
{
"id": 311743,
"value": "1188.98",
"quote": 77437,
"indicator": 1
},
{
"id": 311742,
"value": "1185.52",
"quote": 77437,
"indicator": 2
},
輸出 SER的= VWAPSerializer() 打印(再版(SER))
VWAPSerializer():
date = DateField(allow_null=True, required=False)
open = DecimalField(allow_null=True, decimal_places=2, max_digits=15, required=False)
high = DecimalField(allow_null=True, decimal_places=2, max_digits=15, required=False)
low = DecimalField(allow_null=True, decimal_places=2, max_digits=15, required=False)
close = DecimalField(allow_null=True, decimal_places=2, max_digits=15, required=False)
vwap = SerializerMethodField()
我不知道這是否可以幫助我在日誌中看到這個
VariableDoesNotExist: Failed lookup for key [name] in u'<RegexURLResolver <RegexURLPattern list> (admin:admin) ^admin/>'
[DEBUG 2017-02-05 18:59:47,163] base.py [:929] _resolve_lookup: Exception while resolving variable 'name' in template 'unknown'.
Traceback (most recent call last):
File "/Users/avgeorge/trader/python/amrapali/venv/lib/python2.7/site-packages/django/template/base.py", line 907, in _resolve_lookup
(bit, current)) # missing attribute
VariableDoesNotExist: Failed lookup for key [name] in u'<RegexURLResolver <RegexURLPattern list> (admin:admin) ^admin/>
我在找什麼是一組給定的報價,以返回所有的報價信息(根據模型)以及VWAP數據作爲每個報價的嵌套列表。我希望這是有道理的。林不知道我做錯了什麼,並會感謝任何幫助。
謝謝拉斐爾,我在報價模式中使用VWAPSerializer,並且我擁有IndicatorSerializer。 –
是的,但你的'VWAPSerializer'只有一個字段返回'IndicatorSerializer'的返回值,而後者不會執行'Quote'的嵌套序列化。 –
我想要的是嵌套vwap信息而不是vwap與嵌套引號的引用列表..對不起,如果從我的問題不清楚,我可以編輯它,如果有必要。 –