嵌套序列化器问题在显示反向

时间:2018-11-28 06:43:15

标签: python django

我定义了这个模型:

<script type="text/javascript">
  $('.tip-btn).click(function(){
     var divId = $(this).attr("check");
      $('#'+divId).fadeToggle("slow");
 });
</script>

和此序列化器:

class city (models.Model):
    city_name = models.CharField(max_length=100)
    state = models.ForeignKey(state,related_name='state', on_delete=models.CASCADE)

    def __str__(self):
        return self.city_name

如果我将状态添加到序列化器字段中,则会向我显示表的state_id,但我希望它向我显示state_name(状态表的另一个字段) 我找到了本教程:https://www.django-rest-framework.org/api-guide/relations/ 但此处父模型中显示子模型项, 我想在子模型中显示父名称(与本教程相反) 我该怎么办?

1 个答案:

答案 0 :(得分:0)

这样定义您的序列化器:

class citySerializers(serializers.ModelSerializer):
    state = serializers.SerializerMethodField()
    class Meta:
        model = city
        fields = ('city_name', 'state')
    def get_state(self, instance):
        return instance.state.state_name

DRF documentation on SerializerMethodField

请记住,如果您尚未预取相关状态,则使用此方法将导致对数据库的附加查询以从状态表中获取state_name。