python - 如何将具有相同字段值的所有对象显示为 1 个结果并在 django 中聚合另一个字段
问题描述
这有点复杂,这是我的模型的样子:
class Warehouse(models.Model):
in_move = "in"
out_move = "out"
move_type_choices = (
(in_move, _('دخول')),
(out_move, _('خروج'))
)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
branch = models.ForeignKey(Branch, on_delete=models.CASCADE)
quantity = models.DecimalField(max_digits=6, decimal_places=2)
move_type = models.CharField(choices=move_type_choices, max_length=120)
text = models.CharField(max_length=1200)
date = models.DateTimeField(auto_now=True)
employee = models.ForeignKey(Employee, on_delete=models.PROTECT)
我需要做的是:
- 像这样的查询集
warehouse.objects.filter(branch=spicific_branch)
- 按项目名称对其进行分组,以便显示与
item
一个结果相同的所有查询集 - 获取字段的总和
quantity
- 定义是否
in
移动out
以获取仓库内的当前数量
解决方案
试试这个方法
branch_filter = warehouse.objects.filter(branch__name='spicific_branch')
item_sum = warehouse.objects.values('item__name' ).annotate(total_qty=Sum('quantity'))
推荐阅读
- ssl - 如果 Apache Solr 在没有 SSL 的情况下运行,会有什么安全隐患?
- javascript - 谷歌图表获取列标签值
- python - 我想从这个页面刮掉所有的商业链接
- google-apps-script - Google Apps 脚本 - 如何让我的 AdminDirectory.Users.List 查询被接受?
- docker - 在入口点文件中导出环境变量不起作用?
- laravel - 更新时从空值创建默认对象
- outlook-addin - 共享邮箱的 On-send
- python - 如何通过操作另一列来创建新列?熊猫
- android - ViewBinding - 不同风格的布局资源
- python-3.x - 使用 Tkinter 去除图像周围的空白