Я пытаюсь перебрать форму результатов, и я не могу не думать, что я повторно изобретаю колесо здесь.итерация результатов формы django (не в шаблоне)
filterlist = []
if request.POST:
form = FilterForm(request.POST)
if form.is_valid():
for key, value in form.cleaned_data.iteritems():
filterlist.append(key)
filterlist.append(value)
Это работает, но кажется очень неудобным и создает множество других проблем. Например, значения возвращаются с помощью u ', поэтому я должен использовать value.encode («utf8»), но если значение None, оно вызывает ошибку. Так что теперь я должен проверить, нет ли этого, если не закодировать. Там должен быть лучший путь.
EDIT: То, что я пытаюсь сделать.
Я пытаюсь отфильтровать то, что показано на странице. Проблема, с которой я сталкиваюсь, заключается в том, что если значение пустое (пользователь не заполняет поле, потому что он хочет только фильтровать один объект), то я не получаю никаких результатов. Например, пользователь хочет найти все книги по имени автора «Смит», но не хочет искать жанр.
results = Books.objects.filter(author=author, genre=genre)
Пользователь не получит никаких результатов, потому что это И поиск. Но, если пользователь ставит «Смит» для автора и «тайну» для жанра, то он работает точно так, как я хочу, только давая результаты, где оба являются истинными.
Итак, я пытаюсь устранить пустой материал путем повторения результатов формы. Как я уже сказал, я, вероятно, снова изобретаю колесо.
почему вы должны преобразовать его обратно в "нормальной" строки? – GwynBleidD
Лучший способ сделать что? Вы не объяснили, почему вы это делаете, или как вы используете вывод таким образом, что имеет значение, что это Unicode. –
Что именно вы пытаетесь сделать? Похоже, ваш 'filterlist' - это список ключей, за которыми следуют значения. – karthikr