Django数据没有显示

时间:2011-04-19 19:50:01

标签: python django

我正在建立一个网站,只是为了更好地学习编程,但遇到了一个问题。我正在尝试创建用户主页的状态更新区域,其中当前用户的最新状态更新将显示在其页面顶部(如Facebook)。但是我检索数据的功能似乎根本不显示。我似乎无法看到问题可能在考虑所有其他功能是否与此类似。我所拥有的内容如下:

def show_user_homepage(request):
    user1 = request.user
    status = StatusUpdate.objects.filter(status_user=user1).order_by('status_date_time')[1:]
    context = RequestContext(request,{'user':user1,'status':status})
    return render_to_response('users/index.html',context_instance=context)

功能状态显示的模板部分是:

        <div id="current-status">
            <p>
                Status:
                <span class="italics">
                    {% if status.status_id %}
                        {{ status.status_text }}
                    {% else %}
                        No status currently available
                    {% endif %}
                </span>
            </p>
        </div>

状态的类是:

class StatusUpdate(models.Model):
    status_id = models.AutoField(primary_key=True)
    status_user = models.ForeignKey(User)
    status_text = models.CharField(max_length=2000)
    status_date_time = models.DateTimeField(auto_now_add=True)

def __unicode__(self):
    return '%s' % self.status_text

无论我尝试过什么,模板中的状态部分总是说没有可用的状态。谢谢你的帮助。

3 个答案:

答案 0 :(得分:1)

list[1:]会将元素从1返回到结尾。因此,您的status变量不是单一状态,而是状态列表,列表没有属性status_id

使用[-1]

获取最后一个

更新

您也可以使用django函数latest(http://docs.djangoproject.com/en/dev/ref/models/querysets/#latest)

StatusUpdate.objects.filter(status_user=user1).latest('status_date_time')

答案 1 :(得分:1)

status = StatusUpdate.objects.filter(status_user=user1).order_by('-status_date_time')[1:]

上面的代码将返回状态列表。因此,当您致电status.status_id时,它将永远不会返回True

尝试通过添加[0]而不是[1:]来获取列表中的第一个元素。

答案 2 :(得分:1)

您需要将此添加到Model以进行默认排序:

class Meta:
 ordering=['-status_date_time']

在show_user_homepage中写下这个:

status = StatusUpdate.objects.filter(status_user=user1)[0]