【问题标题】:JSON from django rest Framework来自 django rest 框架的 JSON
【发布时间】: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 外键

【问题讨论】:

    标签: python django json django-rest-framework jsonserializer


    【解决方案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')
    

    【讨论】:

    • 非常感谢您的帮助:)
    猜你喜欢
    • 2014-03-02
    • 1970-01-01
    • 2021-01-30
    • 2014-10-09
    • 2017-03-19
    • 1970-01-01
    • 2017-08-21
    • 2018-09-16
    • 2015-04-05
    相关资源
    最近更新 更多