来自 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