2015-06-23 52 views
2

所以,我的問題是,我有一個detailview,它顯示從我的數據庫中的特定帖子。然後,我使用get_context_data來從不同模型中獲取db值;然而,它在我的模板中輸出了一些奇怪的東西Django - DetailView和模板

我可以在模板中更改哪些內容,以便從該其他模型中列出每個正確的數據庫值?

models.py

class Projects(models.Model): 
    user = models.ForeignKey(User) 
    slug = models.SlugField() 
    project_title = models.CharField(max_length=30) 
    project_shortdesc = models.CharField(max_length=248) 
    project_desc = models.TextField() 

    def save(self): 
     super(Projects, self).save() 
     date = datetime.date.today() 
     self.slug = '%i%i%i%s' % (
       date.year, date.month, date.day, slugify(self.project_title) 
      ) 
     super(Projects, self).save() 


class ProjectsToDo(models.Model): 
    project_tododate = models.DateField() 
    project_tododesc = models.TextField(max_length = 500) 
    project_id = models.ManyToManyField(Projects) 

views.py

class ProjectDetail(generic.DetailView): 
    model = Projects 
    context_object_name = 'indprojects' 
    template_name = 'projectpage.html' 

    def get_context_data(self, *args, **kwargs): 
     context = super(ProjectDetail, self).get_context_data(*args, **kwargs) 
     context['todolist'] = ProjectsToDo.objects.order_by('project_tododate') 
     context['todoform'] = ProjectToDoForm() 
     context['form'] = ProjectForm(instance=Projects.objects.get(slug=self.kwargs['slug'])) 
     return context 

    def get_queryset(self): 
     return Projects.objects.filter(user=self.request.user) 

    @method_decorator(login_required) 
    def dispatch(self, request, *args, **kwargs): 
     return super(ProjectDetail, self).dispatch(request, *args, **kwargs) 

模板

{{todolist}} 

這從模板,輸出: [<ProjectsToDo: ProjectsToDo object>, <ProjectsToDo: ProjectsToDo object>] 我試過{{todolist.project_tododesc}},無一不沒有輸出數據。我不知道如何去解決這個問題,任何幫助將不勝感激。

+2

添加'unicode'方法你'ProjectsToDo'類。 – Gocht

+0

是的,它做到了,謝謝。 – ZachPerkitny

回答

1

我認爲問題在於,如果您在類ProjectsToDo中使用Python 3(或Python 2.x中的__unicode__()),則您沒有定義__str__()方法。

當您嘗試打印模型實例時,Django會查看__str__()來決定要顯示的內容。

See here for more about __str__()

+1

我只是:fp:我應該知道 – ZachPerkitny

+1

@ user3186219 :)我第一次欺騙了我。 – lpounng

+0

另一種方法是讓模板決定如何渲染待辦事項,並在列表中顯式循環。例如,'

    {todolist%中的商品%}
  • {{item.something}}
  • {%endfor%}
' – spectras