2017-08-21 5 views
1

Django Rest Frameworkでは、 'id'の代わりにForeignKeyの値を取得するにはどうすればよいですか?通年、つまり2012年または2013年の間にfinancial_yearを取得したいと考えています。 1と2を出力します。それをどうすれば実現できますか?Django Rest Framework:ForeignKeyの値を取得する方法

私は取得しています出力は以下の通りです:

[{"financial_year":1,"mainline_revenue":18743.0,"regional_revenue":2914.0},{"financial_year":2,"mainline_revenue":23876.0,"regional_revenue":3204.0}] 

しかし、私がしたい:

[{"financial_year":2012,"mainline_revenue":18743.0,"regional_revenue":2914.0},{"financial_year":2013,"mainline_revenue":23876.0,"regional_revenue":3204.0}] 

Models.py:

class FinancialData(models.Model): 
    financial_year = models.ForeignKey(Year) 
    mainline_revenue = models.DecimalField(max_digits=7, decimal_places=2) 
    regional_revenue = models.DecimalField(max_digits=7, decimal_places=2) 

class Year(models.Model): 
    YEARS_CHOICE = (
     (2012, 2012), 
     (2013, 2013), 
     (2014, 2014), 
     (2015, 2015), 
     (2016, 2016), 
     ) 
    year = models.IntegerField(choices=YEARS_CHOICE, blank=True, null=True) 

Serializers.py:

class FinancialDataSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = FinancialData 
     fields = (
      'financial_year', 
      'mainline_revenue', 
      'regional_revenue',) 

答えて

2

は明示的

class FinancialDataSerializer(serializers.ModelSerializer): 
    financial_year = serializers.CharField(source='financial_year.year') 
    class Meta: 
     model = FinancialData 
     fields = (
      'financial_year', 
      'mainline_revenue', 
      'regional_revenue',) 

ソースパラメータは、属性名を定義するフィールドを指定することで、外部キーフィールドの値にアクセスすることができます。 Yearモデルのフィールド名がyearの場合、そのモデルは機能します。フィールド名が異なる場合は、フィールド名を変更する必要があります。