Данные Django не отображаются - PullRequest
0 голосов
/ 19 апреля 2011

Я создаю веб-сайт просто для удовольствия от более полного изучения программирования, но столкнулся с проблемой. Я пытаюсь создать область обновления статуса на главной странице пользователя, где последнее обновление статуса для текущего пользователя будет отображаться вверху их страницы (например, 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 ]

1 голос
/ 20 апреля 2011
status = StatusUpdate.objects.filter(status_user=user1).order_by('-status_date_time')[1:]

Код выше вернет список статусов.Поэтому, когда вы звоните status.status_id, он никогда не вернет True.

Попробуйте получить первый элемент из списка, добавив [0] вместо [1:].

1 голос
/ 20 апреля 2011

Вам нужно добавить это в модель для заказа по умолчанию:

class Meta:
 ordering=['-status_date_time']

А на show_user_homepage напишите это:

status = StatusUpdate.objects.filter(status_user=user1)[0]
1 голос
/ 19 апреля 2011

list[1:] вернет элементы от 1 до конца.Таким образом, ваша переменная status является не отдельным статусом, а списком статусов, и список не имеет атрибута status_id

, чтобы получить последнее использование * [-1]

Обновление:

Вы также можете использовать функцию Джанго latest (http://docs.djangoproject.com/en/dev/ref/models/querysets/#latest)

StatusUpdate.objects.filter(status_user=user1).latest('status_date_time')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...