首页 > 解决方案 > 查询一对多和id数组

问题描述

这是视图集

class TecnicoViewSet (
     mixins.CreateModelMixin,
     mixins.UpdateModelMixin,
     mixins.RetrieveModelMixin,
     mixins.ListModelMixin,
     mixins.DestroyModelMixin,
     viewsets.GenericViewSet):

 queryset = Technician.objects.all ()
 serializer_class = Tecnicoserializer

 def list (self, request):
     data = request.data
     # [1,23,43,65]
     return Response(data)

当我从第 1 步收到数组时,我想在不同的表中搜索与 id 相关的所有信息。

前面说了,我收到了要咨询的技术人员的id,model是work_orders,所以我想获取每个技术人员下的所有工单。

除此之外,我还需要对同一视图集中的其他模型进行更多查询,但我认为这就足够了。

这是 tecnico 模型

        class Tecnico(BaseModel):
            foto = models.ImageField(blank=True, null=True, verbose_name='Foto tecnico', upload_to='cda/pictures')
            empleado =  models.IntegerField(null=True)
            categoria_tecnicos  = models.ForeignKey('cda_configuracion.listaitems', related_name='Categoria_tecnico', on_delete=models.PROTECT)
            activo              = models.BooleanField(default=False)
            disponibilidad = models.IntegerField(default=0)
            nombre_completo    = models.CharField(max_length=50, blank=True)
            documento    = models.CharField(max_length=50, blank=True)
            password = models.CharField(max_length=50, blank=True)
            

            def __str__(self):
                return self.empleado.nombre_completo

            def obtenerCategoria(self):
                return self.categoria_tecnicos.name

            def obtenerTecnico(self):
                return self.empleado.nombre_completo

  

                class Servicio_realizados_orden_trabajo(BaseModel):

                    STATETIPO = (
                        (1, 'sin_entregar'),
                        (2, 'solicitado'),
                        (3, 'entregado'),
                        (4, 'devuelto'),
                        (5, 'email'),
                        (6, 'aceptado'),
                        (7, 'rechazado'),
                        (8, 'facturado')
                    )

                    orden_trabajo       = models.ForeignKey(Orden_trabajo, on_delete=models.CASCADE, related_name="orden_trabajo")
                    tecnico             = models.ForeignKey(Tecnico, on_delete=models.CASCADE, related_name="tecnicos", null=True)
                    servicio_genesis    = models.IntegerField(blank=True, null=True)
                    nombre_servicio     = models.CharField(max_length=150,default='')
                    cantidad            = models.IntegerField(blank=True, null=True)
                    precio              = models.DecimalField(decimal_places=2, max_digits=10, blank=True, null=True)
                    disponible          = models.BooleanField(default=False)
                    servicio_autorizado = models.IntegerField(blank=True, null=True)
                    tipo                = models.IntegerField(default=0)
                    tipo_servicio       = models.IntegerField(default=0)
                    cotizacion          = models.BooleanField(default=True)
                    almacenista         = models.ForeignKey(Tecnico, on_delete=models.CASCADE, related_name="almacenista", null=True)
                    tecnicorecibe       = models.ForeignKey(Tecnico, on_delete=models.CASCADE, related_name="tecnicosreciben", null=True)
                    kardex              = models.IntegerField(blank=True, null=True)
                    state               = models.SmallIntegerField(choices=STATETIPO, default=1)

标签: pythondjangodjango-rest-framework

解决方案


推荐阅读