如何在ListView中添加datetime.combine到get_context_data
How to add datetime.combine to get_context_data in ListView
我有下一个代码并尝试将组合事件日期和时间添加到上下文值
在models.py
class Event(models.Model):
event_date= models.DateField(auto_now=False, auto_now_add=False)
evet_time= models.TimeField(auto_now=False, auto_now_add=False)
在view.py
class EventList(FilterMixin, ListView):
model = Event
filter_class = EventFilter
template_name = 'events/event_list.html'
def get_context_data(self, *args, **kwargs):
context = super(EventList, self).get_context_data(*args, **kwargs)
context["filter_form"] = EventFilter(data=self.request.GET or None)
return context
需要将下一个值添加到上下文。
context["now"] = datetime.utcnow() + timedelta(hours=1)
- 工作正常
context["event_date_time"]
- 如何合并数据库中的日期和时间 table?
下一步尝试:
context["event_date_time"] = datetime.combine(self.event_date, self.event_time)
不工作。
Exception Value:
'EventList' object has no attribute 'event_date'
谢谢帮助。
您正在调用 self.event_date 和 self.event_time,其中 'self' 是 EventList 视图,而不是这些字段实际所在的 Event 模型。
由于您使用的是列表视图,其中视图的内容基于查询集,而不是模型的一个特定实例,因此我会在 Event 上创建模型方法来处理这个问题。
class Event(models.Model):
event_date= models.DateField(auto_now=False, auto_now_add=False)
evet_time= models.TimeField(auto_now=False, auto_now_add=False)
def event_date_time(self):
return datetime.combine(self.event_date, self.event_time)
您不需要将它添加到上下文中,因为它在您在模板中迭代的每个实例上都可用,如下所示:
{% for event in event_list %}
....html here...
{{ event.event_date_time }}
....
{% endfor %}
我有下一个代码并尝试将组合事件日期和时间添加到上下文值
在models.py
class Event(models.Model):
event_date= models.DateField(auto_now=False, auto_now_add=False)
evet_time= models.TimeField(auto_now=False, auto_now_add=False)
在view.py
class EventList(FilterMixin, ListView):
model = Event
filter_class = EventFilter
template_name = 'events/event_list.html'
def get_context_data(self, *args, **kwargs):
context = super(EventList, self).get_context_data(*args, **kwargs)
context["filter_form"] = EventFilter(data=self.request.GET or None)
return context
需要将下一个值添加到上下文。
context["now"] = datetime.utcnow() + timedelta(hours=1)
- 工作正常
context["event_date_time"]
- 如何合并数据库中的日期和时间 table?
下一步尝试:
context["event_date_time"] = datetime.combine(self.event_date, self.event_time)
不工作。
Exception Value:
'EventList' object has no attribute 'event_date'
谢谢帮助。
您正在调用 self.event_date 和 self.event_time,其中 'self' 是 EventList 视图,而不是这些字段实际所在的 Event 模型。
由于您使用的是列表视图,其中视图的内容基于查询集,而不是模型的一个特定实例,因此我会在 Event 上创建模型方法来处理这个问题。
class Event(models.Model):
event_date= models.DateField(auto_now=False, auto_now_add=False)
evet_time= models.TimeField(auto_now=False, auto_now_add=False)
def event_date_time(self):
return datetime.combine(self.event_date, self.event_time)
您不需要将它添加到上下文中,因为它在您在模板中迭代的每个实例上都可用,如下所示:
{% for event in event_list %}
....html here...
{{ event.event_date_time }}
....
{% endfor %}