来自 django rest 框架的 JSON

Posted

技术标签:

【中文标题】来自 django rest 框架的 JSON【英文标题】:JSON from django rest Framework 【发布时间】:2014-02-17 02:52:59 【问题描述】:

我正在使用 django rest 框架制作 API,但 JSON 具有 类别模型的类别id,外键, 我想显示类别的名称等于模型的 id

class Establecimiento(models.Model):
    nombre= models.CharField(max_length = 140)
    categoria = models.ForeignKey(Categoria)
    ciudad = models.ForeignKey(Ciudad)
    def __unicode__(self):
        return self.nombre


class Categoria(models.Model):
    titulo = models.CharField(max_length = 140)

我有一个文件 serializers.py a views.py whit ViewSet

class EstablecimientoSerializer(serializers.ModelSerializer):
#    establecimiento = Establecimineto.objects.values('categoira__titulo')
    class Meta:
        model = Establecimiento.objects.select_related('categoria')
#      model = Establecimiento
        fields = ('nombre','categoria',)
#
class EstablecimientoViewSet(viewsets.ModelViewSet):
#    queryset = Establecimiento.objects.all()
    queryset = Establecimiento.objects.values('nombre','categoria__titulo')
    serializer_class = EstablecimientoSerializer

然后,当我在 views.py 中进行查询时,JSON 结果仅显示字段 null 我应该在哪里查询 JSON 结果不显示 id 外键

【问题讨论】:

【参考方案1】:

这就是你的序列化器应该如何定义:

class EstablecimientoSerializer(serializers.ModelSerializer):
    categoria = serializers.RelatedField()

    class Meta:
        model = Establecimiento
        depth = 1
        fields = ('nombre', 'categoria',)

和视图集:

class EstablecimientoViewSet(viewsets.ModelViewSet):
    queryset = Establecimiento.objects.only('nombre','categoria',)
    serializer_class = EstablecimientoSerializer

这假设您已经为Categoria 定义了__unicode__ 方法:

class Categoria(models.Model):
    # fields..

    def __unicode__(self):
        return self.titulo

如果您不想定义__unicode__,可以使用SlugRelatedField 字段代替RelatedField

categoria = serializers.SlugRelatedField(read_only=True, slug_field='titulo')

【讨论】:

非常感谢您的帮助:)

以上是关于来自 django rest 框架的 JSON的主要内容,如果未能解决你的问题,请参考以下文章

django rest 框架,order_by 来自 serializers.py 文件的 JSON

用于 Django REST 框架的通用 ModelSerializer

django rest框架json序列化器

如何在 React 中显示来自 django-rest-framework 的错误消息

如何在 django rest 框架中添加自定义权限和角色

Django REST框架分页的jQuery代码