2016-12-12 4 views
1

私は次のコードとリストビュー

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 for help。

答えて

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) 

あなたはそれはあなたが、テンプレートにこのような何かを反復処理、すべてのインスタンスで利用可能になりますようコンテキストにそれを追加する必要はありません