首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Django admin中创建的新行不会在站点上显示

在Django admin中创建的新行不会在站点上显示
EN

Stack Overflow用户
提问于 2013-03-27 10:06:45
回答 1查看 128关注 0票数 0

在做Django教程时会注意到这个问题。

  1. 使用管理站点上的选择成功地进行投票,然后显示在管理站点上:

  1. 转到mysite.com/polls,民意测验就不存在了:“没有投票。”
  2. 我可以使用apachectl restarttouch mysite/wsgi.py来获得相同的结果,即新行将在mysite.com/polls上正确显示

为什么在没有重新启动服务器的情况下,新行在创建管理站点后不立即在mysite.com/polls上显示?

来自urls.py的相关代码:

代码语言:javascript
运行
AI代码解释
复制
from django.conf.urls import patterns, url
from django.views.generic import DetailView, ListView
from django.utils import timezone
from polls.models import Poll

urlpatterns = patterns('',
    url(r'^$',
        ListView.as_view(
            queryset=Poll.objects.filter(pub_date__lte=timezone.now) \
                .order_by('-pub_date')[:5],
            context_object_name='latest_poll_list',
            template_name='polls/index.html'),
        name='index'),
...

mysite.com/polls中没有views.py代码。

mysite.com/polls的模板代码

代码语言:javascript
运行
AI代码解释
复制
{% if latest_poll_list %}
    <ul>
    {% for poll in latest_poll_list %}
    <li>
        <a href="{% url 'polls:detail' poll.id %}">{{ poll.question }}</a>
    </li>
    {% endfor %}
    </ul>
{% else %}
    <p>No polls are available.</p>
{% endif %}

使用:

  1. Django 1.5
  2. python 3.3.0-3
  3. mod_wsgi 3.4-2
  4. postgresql 9.2.3-1
  5. apache 2.2.24-1
  6. linux 3.8.4-1

额外注释:

  1. Django (1.5)开发服务器上的相同行为
  2. 在python2.7和MySQL下编写Django (1.5)教程时没有出现相同的行为
  3. 行是在管理站点创建后来自postgresql的SELECT-able。
  4. 当使用django.test.client.Client在管理站点上进行时,新的轮询可以从shell客户端读取。
  5. 当我使用django.test.client.Client从shell进行新的轮询时,无论是从shell客户机还是在mysite.com/polls上,都无法读取新的轮询,但是在服务器重新启动之前,它可以从psqlmysite.com/admin读取。
EN

回答 1

Stack Overflow用户

发布于 2013-03-27 11:27:30

Django中的Queryset通常被计算为“懒惰”,这意味着您可以编写类似于Poll.objects.filter(pub_date__lte=timezone.now).order_by('-pub_date')的东西一次,然后每次对它进行评估(尝试从它获取数据)时,它就会马上去获取数据。

但是,将[:5]添加到末尾时会对其进行评估。这意味着您要传递给ListView的实际上不是一个查询集,而是一个值列表;该列表在创建视图时只创建一次,然后永远不会被重新计算。

为了实现您的目标,我建议您在views.py中创建一个覆盖queryset方法的自定义queryset。要获得更多关于如何做到这一点的信息,只需查看医生们即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15666199

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文