2014-03-04 26 views
0

我很困惑這個。我正在使用任務跟蹤系統,並且在添加或更新任務對象後,他們不會在面向客戶端的網站上刷新,但是在管理員站點中他們在那裏。Django沒有正確讀取數據庫值

問題出在我的TaskCreateView,但我找不出原因。我知道這是因爲我創建了一個簡單的測試TaskListView並顯示更新的值。我需要TaskCreateView來顯示任務對象以及創建一個新的任務對象。

這是我的代碼,希望有人有一個想法,因爲我跑了出去。

#urls.py 
urlpatterns = patterns('', 
    url(r'^$', TaskCreateView.as_view(), name='task-create'), 
    ... 
) 

#views.py 
class TaskCreateView(MultipleObjectMixin, CreateView): 
    ''' 
    base create view for tasks 
    ''' 
    model = Task 
    form_class = TaskCreateForm 
    template_name = "flowtask/content/tasks.html" 
    object_list = Task.objects.all() 
    success_url = reverse_lazy('task-create') 
    load_modal = "createTaskModal" 

    def form_invalid(self, form, **kwargs): 
     #need to add in the error status and modal to the context_data 
     context = self.get_context_data(**kwargs) 
     context['status'] = 'error' 
     context['load_modal'] = self.load_modal 
     context['form'] = form 
     # return super(TaskCreateView, self).form_invalid(form) 
     return self.render_to_response(context) 

    def get_context_data(self, **kwargs): 
     context = super(TaskCreateView, self).get_context_data(**kwargs) 
     context['create_form'] = self.get_form(self.form_class) 
     return context 

我使用Django 1.6和Python 3.3。

+0

推測的相關數據是'object_list'。你如何將它傳遞給模板? –

+0

我創建了一個簡單的測試模板,其中只包含{object_list%中的{%for o} {{o}} {%endfor%},並且沒有顯示此視圖的更新,但是使用通用的ListView,它顯示更新/添加 – awwester

回答

0

您不應該在課堂級定義object_list,而應該是querysetmodel

+0

當我這樣做超級(TaskCreateView,self).get_context_data(** kwargs)失敗。在超級它擊中ListView和失敗:queryset = kwargs.pop('object_list',self.object_list)也許我錯誤地獲取上下文數據? – awwester

1

從你的類定義中刪除的object_list並將其移動到您的get_context_data方法:

def get_context_data(self, **kwargs): 
    context = super(TaskCreateView, self).get_context_data(**kwargs) 
    context['create_form'] = self.get_form(self.form_class) 
    context['object_list'] = Task.objects.all() 
    return context