django - 在 ListView 中使用两个模型
问题描述
我的交易列表中的每个预算类别都有一个 ListView。对于这些视图中的每一个,我想显示此类别的实际预算。例如,我的账单预算包含租金、保险、电话等子预算,这些子预算存储在与交易不同的模型中。当前的 ListView 只是发送按预算类型过滤的交易:
class BillListView(ListView):
model = Transaction
template_name = 'budget/base_transactions.html'
context_object_name = 'transactions'
paginate_by = 10
queryset = Transaction.objects.filter(budget_type__exact='bill')
有没有办法从我的预算数据库中发送子预算数据,以便我可以在模板顶部显示它?
我的模型:
class Transaction(models.Model):
date = models.DateField(default=datetime.date.today)
description = models.CharField(max_length=100, default="")
category = models.CharField(max_length=100, default="")
amount = models.DecimalField(max_digits=10, decimal_places=2, default=0.0)
budget_type = models.CharField(max_length=100, default="")
def __str__(self):
return self.description + ' ' + str(self.amount)
class Budget(models.Model):
category = models.CharField(max_length=100, default="")
sub_category = models.CharField(max_length=100, default="")
amount = models.DecimalField(max_digits=10, decimal_places=2, default=0.0)
解决方案
如果您想通过 传递另一个模型的数据ListView
,您可能正在寻找覆盖 的get_context_data
方法ListView
。然后,您可以将所需的数据与我们的模型对象一起传递。
例如:
在您想要显示有关预算对象的数据的上下文中,您可以将BillListView
视图更改为:
class BillListView(ListView):
model = Transaction
template_name = 'budget/base_transactions.html'
context_object_name = 'transactions'
paginate_by = 10
queryset = Transaction.objects.filter(budget_type__exact='bill')
def get_context_data(self, **kwargs):
context = super(BillListView, self).get_context_data(**kwargs)
context['budgets'] = Budget.objects.filter(category__exact='bill') //filter as per required
return context
然后,您可以budget
通过以下方式循环访问模板中的对象budgets
:
{% for budget in budgets %}
{{ budget.amount }}
{{ budget.sub_category }}
{% endfor %}
推荐阅读
- git - Visual Studio 2019 git 问题:“无法生成 ... ssh.exe:没有这样的文件或目录”在 fetch/push 上
- mysql - Google Cloud App Engine 停止连接到 Cloud SQL
- android - How to i create a button on my website which opens email client on mobile
- c - the sum of an hourglass in C (2D array)
- python - Pythob 在 PC 上因 unicode 错误而失败,但在 Mac 上可以吗?
- node.js - With Mongoose is there an efficient way to update the Model and add new key/values to previously saved documents?
- python - Map 和 Lambda 函数出现问题
- laravel - 在 Laravel 中更新表单出错
- python - 我有一个哈希列表及其出现次数。我想获取出现次数(分号后的数字)
- c++ - Runge Kutta K 值在迭代时保持为零