【问题标题】:Django Queryset only仅 Django 查询集
【发布时间】:2016-04-07 02:18:22
【问题描述】:

我只想选择模型查询集中的几个字段。我看到了这个链接: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 %}

上面的代码给了我项目模型中的所有字段。如何只选择项目中的几个字段?

任何帮助将不胜感激

【问题讨论】:

    标签: python django django-queryset


    【解决方案1】:

    only() 指定应该从数据库中填充哪些字段,但它不会阻止访问模型上的其他字段。如果要限制结果对象中可用的字段,则应改用 values()values_list()。请注意,它们都不返回模型,因为使用模型仍会使其他字段可用。

    【讨论】:

      猜你喜欢
      • 2020-10-26
      • 2017-01-12
      • 2012-04-26
      • 2013-12-06
      • 2021-07-25
      • 2011-05-16
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多