django rest serialize level 2 field

时间:2014-03-06 17:47:12

标签: python django serialization django-rest-framework

您好我需要在2级参考项的序列化器中添加一个字段。

我有以下型号:

model.py:

class Company(models.Model):
   companyName = models.CharField(max_length=50, blank=True)

class Poll(models.Model):
   questionString = models.CharField(max_length=500, blank=True)
   companyId = models.ForeignKey(Company, null=True, db_column='companyId', blank=True)

class PossibleAnswer(models.Model):
   answerString = models.CharField(max_length=100, blank=True)
   pollId = models.ForeignKey(Poll, null=True, db_column='pollId', blank=True,related_name='answers')
   token = models.CharField(max_length=10, blank=True)

serializers.py:

class PossibleAnswerSerializer(serializers.ModelSerializer):
   #companyId = serializers.RelatedField()
   class Meta:
       model = PossibleAnswer
       fields = ('answerString', 'token', 'pollId', 'companyId')

我想为具有名为company的字段的PossibleAnswer对象创建一个Serializer。如何制作这个参考?类似于:django查询集过滤器中的pollId__companyId。

2 个答案:

答案 0 :(得分:1)

我的字段是只读的,您可以使用serializers.Field轻松实现此目的,该class PossibleAnswerSerializer(serializers.ModelSerializer): companyId = serializers.Field(source='pollId.companyId') class Meta: model = PossibleAnswer fields = ('answerString', 'token', 'pollId', 'companyId') 接受源的虚线路径。

你的Serializer将是:

Id

我也同意Erik,即使数据库表示只是ID,使用{{1}}命名模型属性也是一个坏主意。

答案 1 :(得分:1)

另一种解决方案......

ReadingResource