我是Django的新手,它尝试将同一类别的所有费用归为一组并进行检索,并在一个“ link like”表raw中进行检索,当单击该表格时,可以以另一种形式显示该类别中的所有费用。
我有这些模型:
class Category(models.Model):
name = models.CharField(max_length=50)
class Meta:
verbose_name_plural = 'Categories'
unique_together = ("name",)
def __str__(self):
return self.name
class Expense(models.Model):
amount = models.FloatField()
date = models.DateField(default=now, )
description = models.TextField()
owner = models.ForeignKey(to=User, on_delete=models.CASCADE)
category = models.CharField(max_length=50)
def __str__(self):
return self.category
class Meta:
ordering = ['-date', '-pk']
首页查看:
def home(request):
categories = Category.objects.all()
expenses = Expense.objects.filter(owner=request.user)
paginator = Paginator(expenses, 5)
page_number = request.GET.get('page')
page_obj = Paginator.get_page(paginator, page_number)
currency = UserPreference.objects.filter(user=request.user) # .currency
query = Expense.objects.values('category').annotate(total=Sum(
'amount')).order_by('category')
context = {
'expenses': expenses,
'page_obj': page_obj,
'currency': currency,
'query': query
}
return render(request, 'expenses/home.html', context)
我的模板:
<div class="app-table">
<table class="table table-stripped table-hover">
<thead>
<tr>
<th>Amount</th>
<th>Category</th>
<th>Description</th>
<th>Date</th>
<th></th>
</tr>
</thead>
<tbody>
{% for myquery in query %}
<tr class="clickable-row" data-href="https://www.mavtechplanet.com/">
<td>{{myquery.category }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
我试图弄清楚事情,但不清楚。非常感谢您的帮助。
您的模板:
{% for myquery in query %}
<tr class="clickable-row" data-href="https://www.mavtechplanet.com/">
<td><a href = "{% url 'yourapp:showCategoryExpenses' myquery.category %}">{{myquery.category}}</a></td>
</tr>
{% endfor %}
将url添加到urls.py中,在您的应用中像这样,
from youraapp.views import showCategoryExpenses
urlpatterns=[
.
.
.
path("/categoryExpenses/<pk:categoryPk>", showCategoryExpenses, name = "showCategoryExpenses"),
# if you save categories to expense with their name, you must change the <pk:categoryPk> to <slug:categoryName>
]
并将此视图添加到yourapp.views中,如下所示:
def showCategoryExpenses(request, categoryPk): # if you save categories to expense with their name, change categoryPk to categoryName
expenses = Expense.objects.filter(category = categoryPk) # or category = categoryName
context = {
"expenses" : expenses
}
return render(request, "expenses/categoryExpenses.html", context)
最后,将此模板添加到您的模板文件夹中。我的英语能力不好,但是我尝试解决并解释它。也许这就是您要寻找的答案。
如果要显示此模板中类别中所有费用的总和,可以执行以下操作:
def showCategoryExpenses(request, categoryPk): # if you save categories to expense with their name, change categoryPk to categoryName
expenses = Expense.objects.filter(category = categoryPk) # or category = categoryName
expensesSum = 0
for expense in expenses:
expensesSum += expense.amount
context = {
"expenses" : expenses,
"expensesSum" : expensesSum
}
return render(request, "expenses/categoryExpenses.html", context)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句