2016-04-07 19 views
0

Ich möchte nur ein paar Felder in einem Abfrageset eines Modells auswählen. Ich sah diesen Link: Django queryset only und ich dachte, ich implementiere es, aber ich bekomme immer noch die gesamte Abfrage gesetzt.Django Queryset nur

Das ist mein Projekt view.py:

from django.shortcuts import get_object_or_404, render 
from django.http import HttpResponseRedirect 
from django.core.urlresolvers import reverse 
from django.views import generic 
from django.utils import timezone 

from .models import Project 

# Create your views here. 
class IndexView(generic.ListView): 
    model = Project.objects.only("name","jobNumber", "contractor", "assigned_to", "created_date") 
    template_name = 'project/index.html' 

    def get_queryset(self): 
     #return Project.objects.all() 
     return Project.objects.only("name","jobNumber", "contractor", "assigned_to", "created_date") 

class DetailView(generic.DetailView): 
    model = Project 
    template_name = 'project/detail.html' 

Das ist meine index.html Vorlage

{% load render_table from django_tables2 %} 
{% block content %} 
    <h1>Projects</h1> 
    <ul> 
    {% for project in project_list %} 
     <li><a href="{% url 'project:detail' project.id %}">{{ project.name }}</a></li> 
    {% endfor %} 

    </ul> 
    {% render_table project_list %} 
{% endblock %} 

Der obige Code gibt mir alle Felder im Projektmodell. Wie wähle ich nur einige der Felder in den Projekten aus?

Jede Hilfe sehr geschätzt wird

Antwort

1

only() gibt an, welche aus der Datenbank ausgefüllten Felder werden sollte, aber es verhindert nicht andere Felder auf dem Modell aus zugegriffen wird. Wenn Sie die in den resultierenden Objekten verfügbaren Felder einschränken möchten, sollten Sie stattdessen values() oder values_list() verwenden. Beachten Sie, dass keiner von ihnen Modelle zurückgibt, da die Verwendung eines Modells die anderen Felder weiterhin verfügbar machen würde.