我尝试在IndexView
中运行两个以上的查询,并在我的模板中显示结果。但是,我似乎无法将Entry.objects.filter(date=today_date)
和Savings.objects.filter(id=1)
同时添加到get_context_data
,而不会错误地说:
使用参数'('',)'和关键字反转'entry-update' 没有找到参数“{}”。尝试过1种模式: [ '跟踪器/进入/更新/(ΔP[0-9] +)/ $']
我如何将两个不同模型的数据拖入一个视图?更具体地说,我将如何得到这样的东西:
def get_context_data(self, **kwargs):
et = super(IndexView, self).get_context_data(**kwargs)
et['filter'] = Entry.objects.filter(date=today_date), (Savings.objects.filter(id=1))
return et
提前感谢您的帮助!
views.py
class IndexView(generic.ListView):
template_name = 'argent/index.html'
context_object_name = 'object_list'
def get_queryset(self):
return Entry.objects.all()
def get_context_data(self, **kwargs):
et = super(IndexView, self).get_context_data(**kwargs)
et['filter'] = Entry.objects.filter(date=today_date)
return et
models.py
class Entry(models.Model):
date = models.DateField(blank=True, null=True,)
euros = models.CharField(max_length=500, blank=True, null=True)
comments = models.CharField(max_length=900, blank=True, null=True)
euros_sum = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
xrate = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
dollars_sum = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
daily_savings_dollars = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
daily_savings = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
def get_absolute_url(self):
return reverse('argent:detail', kwargs={'pk': self.pk})
def item_date(self):
row_title = self.date
return row_title
class Savings(models.Model):
total_spent_euros = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
total_spent_dollars = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
total_savings = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
def get_absolute_url(self):
return reverse('argent:detail', kwargs={'pk': self.pk})
编辑:我在这篇文章中添加了更多细节。
答案 0 :(得分:0)
关于在一个页面中获取两个查询集结果的问题:
def get_context_data(self, **kwargs):
et = super(IndexView, self).get_context_data(**kwargs)
et['entry_qs'] = Entry.objects.filter(date=today_date)
et['savings_qs'] = Savings.objects.filter(id=1)
return et
现在,在您的模板中,您可以访问这两个查询集。
{{ entry_qs }}
和{{ savings_qs }}
关于您的错误
反向进入&更新'有参数'('',)'和关键字 争论' {}'未找到。尝试过1种模式: ['跟踪器/进入/更新/ / $&#39(P [0-9] +);]
我想你在模板中写了一个错误的模板url
。您在没有参数的情况下使用网址entry-update
。所以Django无法反转这个网址。因为这不存在。您需要将参数传递给此URL
{% url 'entry-update' pk %} # replace pk by primary key of the correct object