Как показать данные в шаблоне django отфильтрованные по критерию пользователя?

Познаю django (да и вообще веб) методом проб и ошибок на домашнем проекте.
Есть простенькая модель:
class CrArchive(models.Model):
    cr_id = models.IntegerField(primary_key=True)
    type = models.ForeignKey(CrType, db_index=True)   
    cr_description = models.TextField(blank=True)
    latitude = models.FloatField(blank=True)
    longitude = models.FloatField(blank=True)

    class Meta:
        managed = False
        db_table = 'cr_archive'
Для ознакомления написал вьюшку для нее:
def index(request):
    latest_crime_list = CrArchive.objects.order_by('-cr_id')[:5]
    context = {'latest_crime_list': latest_crime_list, }
    return render(request, 'archive/archive.html', context)

И часть шаблона под нее:
<div class="row">
        {% if latest_crime_list %}
            {% for crime in latest_crime_list %}
		        <div class="col-md-12">
		        	<div class="bs-callout bs-callout-warning">
		        		<h4>{{ crime.latitude }} | {{ crime.longitude }}  | {{ crime.type }}</h4>
		        		<p>{{ crime.cr_description }}</p>
		        	</div>
		        </div>
            {% endfor %}
        {% endif %}
	</div>

Прекрасно выводятся 5 последних записей из cr_archive.

Теперь решил усложнить задачу. Допустим, пользователь решил вывести все записи, где latitude = 34.567 (значение latitude , допустим, вводится в каком-нибудь компонентике на странице). Тут у меня затык. Я не очень понимаю, как мне передать этот фильтр в модель и отфильтровать значения и как переделать представление. И как не выводить ничего, если поиск по фильтру не запущен? Прошу помощи.
  • Вопрос задан
  • 2904 просмотра
Решения вопроса 1
soshnikov
@soshnikov
Ознакомиться с формами
https://docs.djangoproject.com/en/dev/topics/forms/
Получаете данные, выполняете валидацию, потом можно использовать эти данные как нравится.
Например:
latest_crime_list = CrArchive.objects.filter(latitude=latitude).order_by('-cr_id')[:5]
Как вариант, если координаты сохранены и можно не заставлять пользователя вводить, а выбрать из имеющихся, тогда извлекаете параметр из адреса:
url(r'^/places/latitude/(.+)', places_views.show_latitude),
и во вьюхах используете этот параметр.
Примеров и доков валом, подробно писать влом. Хотите, выкладывайте проект на битбакет или гитхаб - показать кодом быстрее будет, чем объяснять :)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы