我正在开发一个项目管理应用程序。在每个页面(所有项目,新项目,编辑项目等)上,我希望用户的项目出现在基本模板的侧边栏中。
在基本模板的侧栏中,我有以下代码用于呈现用户的项目:
<h5>Your projects</h5>
{% for project in user.projects.all %}
{{ project }}<br/>
{% endfor %}
但是,这只会呈现一个项目,而不是所有项目。那是为什么?
项目模型:
class Project(models.Model):
name = models.CharField(max_length = 50)
... the rest of the fields ...
added_by_user = models.ForeignKey(User)
users = models.ManyToManyField(User, related_name='projects')
def __unicode__(self):
return self.name
def owned_by_user(self, user):
return self.added_by_user == user
答案 0 :(得分:0)
通常这是在视图中完成的,我喜欢使用render_to_response。如果您已经使用了许多视图,并且只想包含此信息,则可以将信息添加到视图中。您可以根据需要在render_to_response
中传递尽可能多的数据from django.shortcuts import render_to_response
def some_view(request,user_id):
# other queries
project_listing = Project.objects.filter(user = user_id):
return render_to_response('sometemplate.html', {"someother_query":someother_query,"project_listing":project_listing,}
<h5>Your projects</h5>
<table>
{% for project in project_listing %}
<tr>
<td>Project Name</td>
<td>{{ project.name }}</td>
</tr>
.... repeat as necessary for each element
{% endfor %}
</table>
... other elements
{% include 'project_list.html' %}
... other elements