2017-02-05 44 views
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數據作爲每個報價的嵌套列表。我希望這是有道理的。林不知道我做錯了什麼,並會感謝任何幫助。

回答

0

您需要在您的IndicatorSerializer中使用您的QuoteSerializer。見django-rest-frameworkdocumentation on nested relationships

+0

謝謝拉斐爾,我在報價模式中使用VWAPSerializer,並且我擁有IndicatorSerializer。 –

+0

是的,但你的'VWAPSerializer'只有一個字段返回'IndicatorSerializer'的返回值,而後者不會執行'Quote'的嵌套序列化。 –

+0

我想要的是嵌套vwap信息而不是vwap與嵌套引號的引用列表..對不起,如果從我的問題不清楚,我可以編輯它,如果有必要。 –

相關問題