按它们所属的类别列出项目

时间:2019-12-14 12:12:54

标签: python django

我是一个完整的Newb,所以请多包涵。我以前从未使用过OOP或框架。

我正在创建一个簿记系统,我希望在其中按分类帐所属的分类显示分类帐。这是我的模型,它似乎可以工作:

class COAGroup(models.Model):
    Name = models.CharField(max_length=200)
    def __str__(self):
        return self.Name

class Ledger(models.Model):
    Name = models.CharField(max_length=200)
    COAGroup = models.ForeignKey(COAGroup, on_delete=models.CASCADE)
    def __str__(self):
        return self.Name

我正在处理第一个视图,该视图应按它们所属的类别列出所有分类帐。例如

<h2>Some COAGroup Name</h2>
<ul>
 <li>A ledger that belongs to this group</li>
 <li>Another ledger that belonds to the group</li>
 <li>And another</li>
</ul>

<h2>Another COAGroup</h2>
<ul>
 <li>A ledger that belongs to this second group</li>
 <li>Another ledger</li>
</ul>

我在views.py中写了以下视图:

def showledgers(request):  
    COAGroups = COAGroup.objects.all()
    Ledgers = Ledger.objects.all()
    context = {
        "COAGroups":COAGroups,
        "Ledgers":Ledgers,
    }
    return render(request,"ListLedgers.html",context)

我已经设法将分类帐显示在ListLedgers.html中,但是我无法弄清楚如何按照我的示例将其分类为COA Group列出。

谢谢!

1 个答案:

答案 0 :(得分:0)

您认为,您最好.prefetch_related(..) [Django-doc]相关的def showledgers(request): COAGroups = COAGroup.objects.prefetch_related('ledger') context = { 'groups': COAGroups, } return render(request, 'ListLedgers.html', context)

COAGroups

然后在模板中,您可以遍历.ledger_set,对于每个这样的组,也可以遍历相关的{% for group in groups %} <h2>{{ group.Name }}</h2> <ul> {% for ledger in group.ledger_set.all %} <li>{{ ledger.name }}</li> {% endfor %} </ul> {% endfor %}

name
  

注意:通常Django模型中的字段名称是用 snake_case 而不是 PerlCase 编写的,因此应为:{ {1}}代替 Name

相关问题