2016-12-12 75 views
1

我有一個代碼,並嘗試添加到背景值的cobmine事件的日期和時間models.py如何添加datetime.combine ListView中

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) 

鑑於

到get_context_data .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"] - 如何從數據庫表中結合日期和時間?

嘗試下一個:

context["event_date_time"] = datetime.combine(self.event_date, self.event_time) 

不要工作。

Exception Value: 
    'EventList' object has no attribute 'event_date' 

Thx尋求幫助。

回答

0

您正在調用self.event_date和self.event_time,其中'self'是EventList視圖,而不是事件模型的實際位置。

由於您使用的是列表視圖,其中視圖的內容基於查詢集而不是某個特定的模型實例,因此我會在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 %}