初级问题:筛选日期以匹配Django中另一个模型的日期



Django的初学者,在过去的几天里,我一直在断断续续地尝试解决这个问题,并尝试阅读文档和在谷歌上搜索解决方案,但都无济于事。

我的django项目有两个应用程序-博客和天气,每个都有一个模型。

blog.models

import datetime
from django.db import models
class BlogEntry(models.Model):

date = models.DateField('Date')
blog_name = models.CharField('Name',max_length = 255, null=True)

weather.models

import datetime
from django.db import models
class WeatherEntry(models.Model):

date = models.DateField('Date')
weather = models.CharField('Weather',max_length = 255, null=True)

天气应用程序应该每天填写一次,但博客应用程序只能偶尔填写。现在,我想为我的BlogEntry模型生成一个DetailView,它还将显示博客创建当天的天气。我的计划是覆盖get_context_data(),但我无法根据日期筛选天气查询集。

在视图中

import datetime
from django.views.generic.detail import DetailView
from blog.models import BlogEntry
from weather.models import WeatherEntry

class BlogDetailView(DetailView):
model = BlogEntry
template_name = 'Blog/blog_detail.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['weather'] = WeatherEntry.objects.filter(date__=date)
return context

我会得到错误NameError: name 'date' is not defined。我也使用过F表达式,它们也不起作用:(

错误很明显。您没有定义日期变量。这是因为没有定义日期变量或将其传递给get_context_data方法。首先,您必须确保日期变量已定义或已传递给get_context_data方法。第二,修正你的压痕方法。python中的缩进很重要。它应该像这个


class BlogDetailView(DetailView):
model = BlogEntry
template_name = 'Blog/blog_detail.html'
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(**kwargs)
context['weather'] = WeatherEntry.objects.filter(date=self.object.date)
return context

相关内容

  • 没有找到相关文章

最新更新