Разработка Django - Доступ к результатам из модели - PullRequest
0 голосов
/ 28 апреля 2011

После того, как я загрузил свою модель и отфильтровал ее, если мне нужно, как мне тогда получить доступ к результатам?Я могу найти множество примеров запросов и фильтрации модели, но ни одного о том, как работать с возвращаемым объектом?

Моя модель выглядит так ...

class Ratecard(models.Model):
    region = models.CharField(max_length=32)
    reportSuite = models.CharField(max_length=32)
    RP_UniqueUsers = models.IntegerField()
    RP_PageImpressions = models.IntegerField()
def __str__(self):
    return self.region

и моя простаяиндексное представление выглядит следующим образом ...

def index(request):

    reportSuites = Ratecard.objects.all()

    return render_to_response('index.html', locals())

Я хочу иметь возможность фильтровать по регионам, а затем получать доступ к значениям в других полях ... Это что-то очень простое в PHP, ноЯ почти не знаю Python / Django, так что любая помощь будет удивительной.

Правильно, поэтому мне нужно сделать некоторые вычисления для того, что возвращается, чтобы я мог сделать ... reportSuite = Ratecard.objects.get(region="Liverpool") answer = reportSuite.RP_UniqueUsers * 100

Это правильно?

1 Ответ

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

Если вы хотите использовать экземпляр, что-то вроде:

reportSuite = Ratecard.objects.get(id=??)
reportSuite.region

reportSuite = Ratecard.objects.all()
for reportSuite in reportSuites:
    reportSuite.region

Но если вы хотите использовать экземпляр (ы) на своей странице напрямую, вы должны сделать это в шаблоне

return render_to_response('template_name', {'reports':reportSuites})

В шаблоне:

{%for report in reports%}
    {{report.region}}
{%endfor%}

Информация о render_to_rsponse Информация о Шаблоны Django

ОБНОВЛЕНИЕ: да, вы можете сделать это, но лучшее место для таких вещей - ваши функции просмотра ... Итак:

answer = reportSuite.RP_UniqueUsers * 100
return render_to_response('template_link', {'reports':reportSuites, 'ans':answer})

И в вашем tepmlate вы можете использовать

{{ans}}

, чтобы показать свой результат ...

...