在Django Rest Framework中,如何获取ForeignKey的值而不是' id'?我希望将financial_year作为全年,即2012年或2013年,而不是例如输出中的1和2。我怎样才能做到这一点?
我得到的输出如下:
[{"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',)
答案 0 :(得分:2)
您可以通过明确指定字段来访问外键字段值
class FinancialDataSerializer(serializers.ModelSerializer):
financial_year = serializers.CharField(source='financial_year.year')
class Meta:
model = FinancialData
fields = (
'financial_year',
'mainline_revenue',
'regional_revenue',)
source参数定义属性名称。假设您的Year
模型的字段名称为year
,那么它可以正常工作。如果字段名称不同,则必须更改它。