0

私はプロジェクト管理アプリに取り組んでいます。すべてのページ (すべてのプロジェクト、新しいプロジェクト、編集プロジェクトなど) で、ユーザーのプロジェクトを基本テンプレートのサイドバーに表示したいと考えています。

基本テンプレートのサイドバーには、ユーザーのプロジェクトをレンダリングするための次のコードがあります。

  <h5>Your projects</h5>
  {% for project in user.projects.all %}
      {{ project }}<br/>
  {% endfor %}

ただし、これはすべてのプロジェクトではなく、1 つのプロジェクトのみをレンダリングします。何故ですか?

プロジェクト モデル:

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
4

1 に答える 1

0

通常、これはビューで行われます。私は render_to_response を使用するのが好きです。すでに多数のビューを使用していて、この情報を含めたいだけの場合は、その情報をビューに追加します。render_to_response で必要なだけデータを渡すことができます

ビュー.py

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,}

templates/project_list.html

<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> 

テンプレート/sometemplate.html

... other elements
{% include 'project_list.html' %}
... other elements
于 2013-03-02T01:30:09.547 に答える