2

私はdjangoを初めて使用し、このビューがプロファイルとポイントに対してそれぞれ2つのSQLクエリを実行している理由を理解しようとして、夜半起きていました。Django デバッグ ツールによると、7 つの SQL クエリが実行されます。

 1. SELECT...profile
 2. SELECT...points
 3. SELECT...profile
 4. SELECT...points
 5. SELECT...django_session
 6. SELECT...auth_user
 7. SELECT...posts

プロファイルとポイントが 2 回ヒットする理由がわかりません。プロファイルがヒットするたびに SQL スタック トレースが発生し、ポイントがヒットするたびに同じになります。

プロファイルの SQL スタック トレース:

1./Library/Python/2.7/site-packages/django/contrib/staticfiles/handlers.py in call (72) return self.application(environ, start_response)

ポイントの SQL スタック トレース:

  1. /Library/Python/2.7/site-packages/django/contrib/staticfiles/handlers.py in call (72) return self.application(environ, start_response)
  2. /Users/jcarnegie/Documents/web/admin-site/userProfile/views.py in get_context_data(19) context["points"] = Points.objects.get(user_id = self.kwargs["pk"])

これが私のコードです:

class UserProfile(generic.DetailView):
    template_name = 'userProfile/story.html'
    model = Profile
    context_object_name = 'profile'

    def get_context_data(self, **kwargs):
        context = super(UserProfile, self).get_context_data(**kwargs)
        context["points"] = Points.objects.get(user_id = self.kwargs["pk"])
        context["posts"] = Posts.objects.filter(user_id = self.kwargs["pk"]).prefetch_related('tags')

そして、ここに私のテンプレートがあります:

{% extends "core/base.html" %}
{% load url from future %}

{% block content %}
<div class="content">
    <div class="content-inner">
    <div class="story">
        <div class="story-left" id="left-story">
        <div class="img">
            <div>
            <img src="https://s3.amazonaws.com/pic-3123/{{profile.pic}}" />
        </div>
        </div>
        <h1>{{ profile.fname }} {{ profile.lname }}</h1>
        <p>{{ profile.title }}</p>
        <div class="details">
        <div>
            <span>Points</span>
            <p>{{ points.total }}</p>
        </div>
            {% if profile.city and profile.state %}
        <div>
        <span><i class="icon-map-marker"></i></span>
        <p>{{ profile.city }}, {{ profile.state }}</p>
            </div>
        {% endif %}
        {% if profile.company %}
        <div>
               <span><i class="icon-briefcase"></i></span>
           <p>{{ profile.company }}</p>
        </div>
        {% endif %}
        <div>
        <span><i class="icon-time"></i></span>
        <p><span class="muted">Joined on</span> {{ profile.dateJoined|date:"M d, Y" }}</p>
        </div>
    </div>
    </div>
    <div class="story-right">
       <h3>Posts Made</h3>
       <div class="tab-content">
       {% if posts %}
          <ul id="contributionHolder" class="right-ul">
              {% for post in posts %}
              <li class="content-item" id="post_{{post.id}}">
             <h1 class="volk-font"><a href="{% url 'contributions:detail' post.url post.id %}">{{post.title}}</a></h1>
             <p class="volk-font limited-text">{{ post.description }}</p>
             <div class="tag-holder">
                  {% for tag in post.tags.all %}
              <a class="tag volk-font grey-button-flat" href="">{{tag.name}} </a>
                      {% endfor %}
                     </div>
           </li>                        
           {% endfor %}
      </ul>
    {% else %}
        <div class="alert"> <button type="button" class="close" data-dismiss="alert">×</button>{{ profile.fname }} has not made any posts.</div>
    {% endif %}
    </div>

        </div>
        </div>
    </div>
</div>
{% endblock %}

どんな助けやアイデアも大歓迎です!前もって感謝します。

4

1 に答える 1