Django Queryset 只返回结果

3

我希望在模型的查询集中仅选择几个字段。我看到了这个链接:Django queryset only,我认为我已经实现它了,但我仍然得到整个查询集。

这是我的项目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'

这是我的index.html模板。
{% 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 %}

上面的代码给出了 Project 模型中的所有字段。我该如何仅选择一些字段作为 Projects 的输出?任何帮助将不胜感激。
1个回答

3
< p > only() 方法可以指定从数据库中获取哪些字段,但不能阻止访问模型上的其他字段。如果您想限制结果对象中可用的字段,则应使用 values()values_list() 方法。请注意,它们都不返回模型,因为使用模型仍会使其他字段可用。 < /p >

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接