2016-04-07 27 views
0

Modelin sorgu kümesinde yalnızca birkaç alanı seçmek istiyorum. Bu bağlantıyı gördüm: Django queryset only ve bunu uyguladığımı düşündüm, ancak hala tüm sorgu kümesini alıyorum.Yalnızca Django Queryset

Bu benim Proje view.py geçerli:

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' 

Bu benim index.html şablon

{% 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 %} 

Yukarıdaki kod bana Proje modelinde tüm alanları verir olduğunu. Projelerdeki alanlardan sadece birkaçını nasıl seçerim?

Herhangi bir yardım büyük veritabanından doldurulmalıdır Fields

cevap

1

only() belirliyorsa takdir edilecektir, ancak erişimine karşı modeline diğer alanları engellemez. Sonuçta ortaya çıkan nesnelerdeki alanları sınırlamak istiyorsanız, bunun yerine values() veya values_list()'u kullanmalısınız. Bir model kullanmanın diğer alanları kullanıma sunacağından, bunların hiçbirinin model döndürmediğine dikkat edin.