Форум сайта python.su
Здравсвуйте.
Подскажите пожалуйста в чем ошибка.
Пытаюсь добавить форму поиска на SearchView
class Moderate(SearchView): @method_decorator(staff_member_required) def dispatch(self, *args, **kwargs): return super(Moderate, self).dispatch(*args, **kwargs) model = Ad template_name = 'adapp/ad_moderate.html' def get_queryset(self): qs = super(Moderate, self).get_queryset().filter(ad_type__isnull=False, ad_sub_type__isnull=False) return qs def get_context_data(self, **kwargs): context = super(Moderate, self).get_context_data(**kwargs) context['filter'] = ModerateFilter(self.request.GET) return context # define method to recieve fields from form, and change data accordings def post(self, request, *args, **kwargs): selected = request.POST['selected'] record = Ad.objects.get(pk=int(selected)) form = ModerateForm(request.POST, instance=record) if form.is_valid(): form.save(commit=True) return HttpResponseRedirect('')
<form action="" method="get"> {{ filter.form.as_p }} <input type="submit"> </form>
<h2>Search</h2> <form method="get" action=""> <table> {{ form.as_table }} <tr> <td> </td> <td> <input type="submit" value="Search"> </td> </tr> </table> {% if query %} <h3>Results</h3> {% for result in page.object_list %} <p> <a href="{{ result.object.get_absolute_url }}">{{ result.object.title }}</a> </p> {% empty %} <p>No results found.</p> {% endfor %} {% else %} {# Show some example queries to run, maybe query syntax, something else? #} {% endif %} </form>
<form action="" method="POST"> {% csrf_token %} <input type="radio" name="moderated" value="True">Accept <br> <input type="radio" name="moderated" value="False">Decline <input type="hidden" value="{{ object.id }}" name="selected"> <input class="btn" type="submit" value="moderate"> </form>
Отредактировано kaldown (Окт. 4, 2015 16:41:13)
Офлайн
form method=“get”
def post(self, request, *args, **kwargs):
Офлайн
balalay12вот post какраз сделал для одной из формочек, с кнопками.
form method=“get”
def post(self, request, *args, **kwargs):
Отредактировано kaldown (Окт. 2, 2015 13:20:03)
Офлайн
Ваще не пойму.
Мне нужно писать собственную форму если использую SearchView или же нет? Потому что она появляется сама, но результатов не выдает не пойму в чем причина.
Вообще не хочет работать если в urls добавить urls(r'^page/$' MyPageView.as_view()), то появляется форма, но не выдает результатов, зато прекрасно себя чувствует если urls(r'^/page$', include('haystack.urls')), но тогда отсутствует вся логика из моего view .
Как их скрестить то?
Пасибо.
P.S. тут впихнул сразу весь код.
http://stackoverflow.com/questions/32932795/haystack-on-existing-template
Отредактировано kaldown (Окт. 4, 2015 14:26:24)
Офлайн
Попробуй через SearchQuerySet(). По мне так удобнее, не надо париться с формами.
Пример
class Search(ListView): template_name = "search/search.html" context_object_name = "result" def get_queryset(self): sqs = SearchQuerySet().filter(Q(name=Clean(self.request.GET.get("q"))) | Q(name=Clean(self.request.GET.get("q")))).models(Model).load_all() return sqs
Офлайн
get_context_data(): context['results'] = SearchForm(self.request.GET).search()
for result in results: result.object.title
for result in results: result.title
Отредактировано kaldown (Окт. 4, 2015 19:21:14)
Офлайн
В result лежaт экземпляры SearchResult.
Для того чтобы получить ссылку на экземпляр джанговского объекта нужно обращаться к свойству object.
В противном случае получите то, что положили в индекс.
Как-то так.
Отредактировано balalay12 (Окт. 4, 2015 19:32:12)
Офлайн