2012-05-12 7 views
0

У меня есть эти модели:Есть ли лучший способ моделирования этих отношений?

class Assignment(db.Model): 
    title = db.StringPeoperty(required=True) 
    ...other stuff... 

class TeamScore(db.Model): 
    assignment = db.ReferenceProperty(Assignment, 
             collection_name="teamScores", 
             required=True) 
    teamID = db.IntegerProperty(required = True) 
    score = db.IntegerProperty(required = True) 
    ...other stuff... 

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

assignments = Assignment.all() 

В шаблоне:

{% for assignment in assignments%} 
    **<!--How to implement showing the top three-->** 
    {% for score in assignment.teamScores%} 
     {{score.teamID}} 
     {{score.score}} 
     ............... 
    {% endfor%} 
{%endfor%} 

С помощью этой модели хранилища данных. Мне нужно сортировать в шаблоне, это невозможно. Поэтому, я думаю, у этого может быть лучшая модель для решения этой проблемы. Но я не могу понять. Я думал об этой идее, которая добавляет ListProperty для хранения первой тройки. Каждый раз, когда генерируется новый TeamScore, я сравниваю это с результатами в Списке, чтобы сохранить первые три новых. Но я думаю, что этот путь не является оправданием.

Можете ли вы дать мне какое-нибудь предложение?

Спасибо!

ответ

1

Это не проблема моделирования данных, это шаблонный. Вам нужно получить назначения и выполнить запросы, чтобы получить список баллов в вашем коде, и передать результаты в шаблон, а не просто передать модель назначения и выполнить остальную часть работы в вашем шаблоне.

+0

Спасибо, Ник. Но есть много заданий, для каждого задания мне нужен TOP3. Если я делаю запрос в моем файле python, это означает, что мне нужно повторить все эти назначения и найти TOP3 для всех. Вы предлагаете мне поместить все TOP3 каждого задания в один список баллов? Я пытаюсь выполнить user_essionEntity.teamScores.order ('- score'). Fetch (3) ', чтобы получить ТОП-3 одного задания, но кажется, что порядок не работает. Функция заказа не может использовать пользовательскую ссылку, не так ли? – hakunami

+0

@stevenYANG Да, но вам нужно будет делать много запросов независимо от того, где вы это делаете. Я бы предложил создать список кортежей (назначение, top-3), где второй элемент - список лучших результатов. –

+0

Извините, я просто хочу дать понять, что ДА означает, что я могу заказать свойство refernece? Код, который я пишу в последнем комментарии, доступен? – hakunami

Смежные вопросы