Item Model(代表产品,如 MacBook)class Item(models.Model): name = models.CharField(max_length=100) description = models.CharField(max_length=100) manufacturer = models.ForeignKey('Manufacturer', blank=True, null=True, on_delete=models.SET_NULL) introduction = models.DateField(auto_now=True) is_retired = models.BooleanField(default=False) tags = models.ManyToManyField(Tag) def __str__(self): return self.nameOnHand 模型(代表一个序列化的 MacBook)class OnHand(models.Model): name = models.CharField(max_length=100) serial = models.CharField(max_length=80) asset = models.CharField(max_length=20) product = models.ForeignKey(Item, blank=True, null=True, on_delete=models.CASCADE) tags = models.ManyToManyField(Tag) def __str__(self): return self.serial索引视图索引函数def index(request): items = Item.objects.all() context = { 'items':items, } print(items) return render(request, 'index.html', context)模板/表格<table class="table table-hover"> <thead class="thead-light"> <tr> <th>Item Id</th> <th>Title</th> <th>Manufacturer</th> <th>On Hand</th> <th>Category Id</th> </tr> </thead> <tbody> {% for item in items %} <tr> <td>{{ item.pk }}</td> <td>{{ item.name }}</td> <td>{{ item.manufacturer }}</td> <td>{{ item.quanity }}</td> </tr> {% endfor %} </tbody></table>本申请是一个库存管理系统,其可以在产品例如在MacBook Pro或iPhone 6,和OnHands其被序列这些项的实例。在我的功能指数我传递一个结果all()查询到索引视图中的上下文。我可以查询OnHand.objects.filter(product_id=item.pk)以获取每个Item 的数量,但是,在我目前的做事方式中,我不确定如何将该值传递给前端,同时保持其关系(如果有意义的话)。我想item.quanity基本上代表该特定项目的数量。我在寻找什么?我最初的想法是附加到 QuerySet 但我不知道该怎么做。
1 回答
皈依舞
TA贡献1851条经验 获得超3个赞
您正在寻找annotate。
from django.db.models import Count
items = Item.objects.annotate(
quantity=Count('onhand_set__id'),
)
根据您的使用情况,您可能需要传递distinct=True给Count.
添加回答
举报
0/150
提交
取消