Python中文
首页
教程
问答
标签
搜索
登录
注册
Django Rest框架结合了2个查询
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有机器模型,假设机器有不同的状态,如生产、维护、挂起等。我想通过调用<a href="http://127.0.0.1:8000/api/machinestatus/?machines=2,7" rel="nofollow noreferrer">http://127.0.0.1:8000/api/machinestatus/?machines=2,7</a>构建一个api来响应最新的机器状态 此端点应响应计算机ID 2和7的状态,我尝试了许多方法,但仍然无法使其工作,请帮助</p> <p>型号:</p> <pre><code>class MachineStatus(models.Model): user = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=False, null=False) machine = models.ForeignKey( Machine, on_delete=models.CASCADE, blank=False, null=False) upt_time = models.DateTimeField(blank=False, null=False) status = models.CharField( max_length=1, choices=JOB, blank=False, null=False) def __str__(self): return f"{self.machine} {self.upt_time} {self.status}" class Meta: verbose_name_plural = "MachineStatus" </code></pre> <p>序列化程序:</p> <pre><code>class MachineStatusSerializer(serializers.ModelSerializer): upt_time = serializers.DateTimeField(read_only=True) status = serializers.CharField(read_only=True) user = serializers.SlugRelatedField(read_only=True, slug_field='username') machine = serializers.SlugRelatedField( read_only=True, slug_field='name') class Meta: model = MachineStatus fields = '__all__' </code></pre> <p>查看:</p> <pre><code>class MachineStatusView(viewsets.ModelViewSet): ''' Machine Status View ''' queryset = MachineStatus.objects.all() serializer_class = MachineStatusSerializer def get_queryset(self): queryset = MachineStatus.objects.all() machines = self.request.query_params.get('machines') if machines: machines = machines.split(',') for i in machines: queryset = MachineStatus.objects.all() queryset = queryset.filter(machine=i).order_by('-upt_time')[:1] \\ question: how to combine queries' result? return queryset </code></pre> <p>每个“i”都会用对应的最新机器状态的结果调用queryset,但问题是如何在for循环中组合这些queryset?多谢了</p> <p>或者有没有其他更好的方法来实现这一点?<br/> 我尝试过machine\uuu in=machine without for loop,但由于我没有使用progresql,所以不能使用distinct(“machine”)。你知道吗</p> <p>谢谢你的帮助</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我的建议是创建一个包含id、machine\u id、last\u status的sql视图。 然后创建一个模型并将其连接到这个sql视图,并在机器和最后一个机器状态之间建立一个链接。你知道吗</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何将Python中的列表复制到给定的目标中?
2 回答
如何将python中的列表插入SQL表
6 回答
如何将python中的列表转换为numpy数组以放入十位
2 回答
如何将python中的列表输入javascript?
1 回答
如何将python中的列表返回给dag?
10 回答
如何将Python中的列表项重新排列成成对的元组/列表?
6 回答
如何将Python中的初始化对象序列化为XML?
6 回答
如何将python中的十进制字符串转换为数字?
3 回答
如何将Python中的原始输入文本转换为Tkinter中的标签?
5 回答
如何将python中的反斜杠命令转换为在Linux上运行
6 回答
如何将python中的命令行参数转换为字典?
4 回答
如何将python中的图像值传递到kivy中的kv文件?
7 回答
如何将Python中的图像数组(枕头对象)上传到Google云
7 回答
如何将Python中的图像编码为Base64?
9 回答
如何将python中的图像调整为灰度低分辨率,如MNIST时尚数据?
7 回答
如何将python中的多个html输出保存到单个文件(或多个)中?
7 回答
如何将Python中的多个ifelse语句重构为一个函数?
8 回答
如何将Python中的多处理与Django结合使用,从xml文件创建数千个模型实例?
3 回答
如何将python中的多级API响应转换为dataframe
1 回答
如何将python中的多线程编程模型转换为异步/等待模型?
9 回答