以下是我的模特:
class Property(models.Model):
id = [...]
address = [...]
class Property_Value(models.Model):
id = models.ForeignKey(Property)
amount = [...]
last_updated = [...]
def __unicode__(self):
return '%s: %s' % (self.last_updated, self.amount)
我的序列化器是:
class Property_ValueSerializer(serializers.ModelSerializer):
class Meta:
model = Property_Value
fields = ('last_updated', 'amount')
class PropertySerializer(serializers.ModelSerializer):
1) property_values = Property_ValueSerializer(source='property_value_set', many=True)
2) property_values = serializers.RelatedField(many=True, read_only=True)
class Meta:
model = Property
fields = ('id', 'address', 'property_values')
我想像这样展示一个json:
[
{
"id": "2",
"address": "123 Apple Lane",
"property_values": [
{
"10/13/2016": "1709195.00"
}
]
}
]
如果我使用选项1,我会得到:
[
{
"id": "2",
"address": "123 Apple Lane",
"property_values": [
{
"last_updated": "10/13/2016",
"amount": "1709195.00"
}
]
}
]
如果我使用选项2(这是Rest教程的建议,我得到一个归因错误:
AttributeError at /api/property/
'Property' object has no attribute 'property_values'
我不太确定我做错了什么。有人可以指出我做错了什么吗?感谢。
答案 0 :(得分:0)
您可以使用StringRelatedField返回相关字段的__unicode__
表示。在您的情况下,__unicode__
方法已经按照您在序列化程序中期望的方式返回值。
class PropertySerializer(serializers.ModelSerializer):
property_values = serializers.StringRelatedField(many=True)
class Meta:
model = Property
fields = ('id', 'address', 'property_values')
class Property_Value(models.Model):
id = models.ForeignKey(Property, related_filed="property_values")
amount = [...]
last_updated = [...]
def __unicode__(self):
return '%s: %s' % (self.last_updated, self.amount)