【发布时间】:2019-07-29 13:43:35
【问题描述】:
我有一个非常重要的查询:我想序列化一组数据,或者更确切地说是一个具有另一个模型的外键的模型,以便通过外键显示另一个表的字段,比如名称:
模型 Equipos
id_equipo=models.PositiveSmallIntegerField(primary_key=True)
nombre=models.CharField(max_length=15)
vendedor=models.CharField(max_length=10,default='S/A',blank=True)
ip_gestion=models.GenericIPAddressField(protocol='Ipv4',default='0.0.0.0')
tipo=models.CharField(max_length=8,default='S/A',blank=True)
localidad=models.CharField(max_length=5,default='S/A',blank=True)
categoria=models.CharField(max_length=10,default='S/A',blank=True)
ultima_actualizacion=models.DateTimeField(auto_now=True)
class Meta:
db_table = 'Equipos'
模型接口
class Interfaces(models.Model):
id_interface=models.PositiveIntegerField(primary_key=True)
id_EquipoOrigen=models.ForeignKey(Equipos,on_delete=models.DO_NOTHING,related_name='equipo_origen')
id_PuertoOrigen=models.ForeignKey(Puertos,on_delete=models.DO_NOTHING,related_name='puerto_origen',null=True,blank=True)
estatus=models.BooleanField(default=False)
etiqueta_prtg=models.CharField(max_length=80,null=True,blank=True)
grupo=models.PositiveSmallIntegerField(default=0,blank=True)
if_index=models.PositiveIntegerField(default=0,blank=True)
bw=models.PositiveSmallIntegerField(default=0,blank=True)
bw_al=models.PositiveSmallIntegerField(default=0,blank=True)
id_prtg=models.PositiveSmallIntegerField(default=0,blank=True)
ospf=models.BooleanField(default=False)
description=models.CharField(max_length=200,null=True,blank=True)
id_EquipoDestino=models.ForeignKey(Equipos,on_delete=models.DO_NOTHING,related_name='equipo_destino')
id_PuertoDestino=models.ForeignKey(Puertos,on_delete=models.DO_NOTHING,related_name='puerto_destino')
ultima_actualizacion=models.DateTimeField(auto_now=True)
所以我想创建一个序列化程序,通过接口模型的 Id_EquipoOrigen(指的是 Equipos 模型),它能够在 json 中呈现 Equipos 模型的字段 nombre、localidad、categoria .
我已经有了序列化设备和接口模型
class EquipoSerializer(serializers.ModelSerializer):
class Meta:
model=Equipos
fields=('id_equipo','nombre','vendedor','ip_gestion','tipo','localidad','categoria','ultima_actualizacion')
# Serializando los Datos del Modelo Equipo_Interface(Registros)
class InterfaceSerializer(serializers.ModelSerializer):
class Meta:
model=Interfaces
fields=('id_interface','id_EquipoOrigen','id_PuertoOrigen','estatus','etiqueta_prtg','grupo','if_index','bw','bw_al','id_prtg','ospf','description','id_EquipoDestino','id_PuertoDestino','ultima_actualizacion')
class EquiposViewSet(viewsets.ModelViewSet):
queryset=Equipos.objects.all()
serializer_class=EquipoSerializer
class InterfacesViewSet(viewsets.ModelViewSet):
queryset=Interfaces.objects.all()
serializer_class=InterfaceSerializer
pagination_class=PostPageNumberPagination
【问题讨论】:
标签: django django-rest-framework