2016-12-12 2 views
1

내가 다음 코드와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) 

에서 상황에 맞는 값으로 cobmine 이벤트 날짜와 시간을 추가하려는이에 get_context_data하는 datetime.combine을 추가하는 방법 .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"] - db 테이블에서 날짜와 시간을 결합하는 방법은 무엇입니까?

다음 시도 :

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보기이며 실제 필드가있는 이벤트 모델은 아닙니다.

보기의 내용이 모델의 특정 인스턴스가 아닌 쿼리 세트를 기반으로하는 목록보기를 사용하고 있으므로이를 처리하기 위해 이벤트에 모델 메서드를 만듭니다.

{% for event in event_list %} 
    ....html here... 
    {{ event.event_date_time }} 
    .... 
{% endfor %} 
:

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) 

당신은 당신이 템플릿에 이런 일을 통해 반복 모든 인스턴스에서 사용할 수 있습니다로 컨텍스트에 추가 할 필요가 없습니다