2015-01-22 3 views
0

мой стол:GroupBy и имея в web2py

db.define_table('test', Field('name'), Field('pics', 'upload')) 

Я хочу, чтобы отобразить 5 имен из name случайным образом, то я хочу, чтобы отобразить одну фотографию из pics, который имеет соответствующий идентификатор с любым из случайным образом выбранные имена.

Это действие:

def index(): 
    rows = db().select(db.test.ALL, limitby=(0, 5), orderby='<random>') 
    myorder = rows==id 
    rows_two = db().select(db.test.ALL, limitby=(0, 1), groupby=db.test.pics, having=myorder) 
    return locals() 

и это мнение:

{{for i in rows_two:}} 
<div style="text-align:left"> 
<img width="200px" 
    src="{{=URL('download', args=i.pics)}}" /> 
</div> 
{{pass}} 
{{block left_sidebar}} 
{{for row in rows:}} 
{{=LI(A(row.name, _href=URL('other', args=row.id)))}} 
{{pass}} 
{{end}} 

То, что я хочу добиться того, чтобы отобразить одно изображение из pics это идентификатор совпадает с одним из случайным образом отображается имена. Конечно, это не работает, поэтому я буду признателен за помощь в этом. Огромное спасибо.

+0

Зачем вам нужен второй запрос? Не можете ли вы просто отобразить рис из первой записи в 'rows' (или из любой записи в' rows')? – Anthony

+0

@ Энтони Да, я попытался отобразить изображение и имена из первой записи в 'rows', но я не мог понять, как отображаются 5' name' и 1 'pics', я пробовал' limitby = (0,5) 'и' limitby = (0,1) 'в том же запросе, но я просто не мог понять это правильно. –

ответ

0

Похоже, что нет необходимости в rows_two, так как каждая из записей в rows уже содержит рис., Поэтому вы можете использовать любой из них. Таким образом, изменить свой код к следующему:

def index(): 
    rows = db().select(db.test.ALL, limitby=(0, 5), orderby='<random>') 
    return locals() 

По мнению:

<div style="text-align:left"> 
<img width="200px" 
    src="{{=URL('download', args=rows[0].pic)}}" /> 
</div> 

Примечание, вид просто отображает рис из первой записи в rows.

+0

Большое спасибо. Мне нужно лучше понять «аргументы», и вы мне очень помогаете. Я ценю это. BTW: есть ли способ использовать «случайный» в представлении таким образом, что изображение будет отображаться случайным образом из записей в «строках», причем не только всегда из первой записи? –

+0

Я не могу в это поверить, но я думаю, что в своем предыдущем комментарии я понял ответ на свой вопрос. Это то, что я сделал в 'view': ' {{random random k = random.randint (0, 4)}} 'then' src = "{{= URL ('download', args = rows [k] .pics)}} "'. Теперь изображение отображается случайным образом из записей в 'rows' вместо отображения первой записи. Правильно ли это? Кажется, это работает. Тогда, я думаю, я делаю некоторый прогресс! Благодаря вам! –

+0

Я столкнулся с новой проблемой. Теперь у меня есть 5 случайных «имен» и 1 случайный «pics», 1 «pics» имеет тот же идентификатор, что и одно из пяти «name». Если щелкнуть 'имя', которое соответствует« pics », я хочу что-то сделать в действии' other', в основном говоря правильный ответ, и если какое-либо из четырех имен «name» щелкнуло, я хочу сделать что-то еще, в основном говоря неправильно ответьте в «другом» действии. Я пробовал почти все, чтобы это произошло, но провалилось. Должен ли я опубликовать это в отдельном вопросе, или вы можете помочь мне с этим здесь? –