猿问

附加到 QuerySet 项

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.name

OnHand 模型(代表一个序列化的 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 但我不知道该怎么做。


沧海一幻觉
浏览 160回答 1
1回答

皈依舞

您正在寻找annotate。from django.db.models import Countitems = Item.objects.annotate(&nbsp; &nbsp; quantity=Count('onhand_set__id'),)根据您的使用情况,您可能需要传递distinct=True给Count.
随时随地看视频慕课网APP

相关分类

Python
我要回答