FieldError в /category_list

Я сталкиваюсь с этой проблемой в моем проекте электронной коммерции, когда я пытаюсь сделать пагинацию

Невозможно подобрать ключевое слово '' к полю. Варианты: created_at, description, id, is_active, subcategories, thumbnail, title, url_slug

# CATEGORIES
class CategoriesListView(ListView):
    model = Categories
    template_name = "admin_local/category_list.html"
    paginate_by = 3

    def get_queryset(self):
        filter_val = self.request.GET.get("filter", "")`enter code here`
        order_by = self.request.GET.get("orderby", "id")
        if filter_val != "":
            cat = Categories.objects.filter(
                Q(title__contains=filter_val) | Q(description__contains=filter_val)).order_by(order_by)

        else:
            cat = Categories.objects.all().order_by(order_by)

        return cat

    def get_context_data(self, **kwargs):
        context = super(CategoriesListView, self).get_context_data(**kwargs)
        context["filter"] = self.request.GET.get("filter", "")
        context["orderby"] = self.request.GET.get("orderby", "")
        context["all_table_fields"] = Categories._meta.get_fields()
        return context

Я столкнулся с этой проблемой в моем проекте электронной коммерции, когда я пытаюсь сделать пагинацию Это html файл

 <div class="row">
        <div class="col-lg-12">
            <div class="card">
                <div class="card-body">
                    <nav aria-label="Page navigation example">
                        <ul class="pagination">
                            {% if page_obj.has_previous %}
                                <li class="page-item"><a class="page-link"
                                                         href="{% url 'category_list' %}?filter={{ filter }}&orderby={{ orderby }}&page={{ page_obj.previous_page_number }} ">Previous</a>
                                </li>
                            {% else %}
                                <li class="page-item disabled"><a class="page-link"
                                                                  href="#">Previous</a>
                                </li>
                            {% endif %}
                            <li class="page-item"><a class="page-link" href="#">1</a></li>
                            <li class="page-item"><a class="page-link" href="#">2</a></li>
                            <li class="page-item"><a class="page-link" href="#">3</a></li>
                              {% if page_obj.has_next %}
                                <li class="page-item"><a class="page-link"
                                                         href="{% url 'category_list' %}?filter={{ filter }}&orderby={{ orderby }}&page={{ page_obj.next_page_number }} ">Next</a>
                                </li>
                            {% else %}
                                <li class="page-item disabled"><a class="page-link"
                                                                  href="#">Previous</a>
                                </li>
                            {% endif %}
                        </ul>
                    </nav>
                </div>
            </div>
        </div>
    </div>

Причина, по которой вы получаете это, заключается в использовании orderby={{ orderby }}, который является пустым, если он не заполнен.

Вы должны передать контекст с:

context['orderby'] = self.request.GET.get('orderby', 'id')

кроме того, вы должны |urlencode параметры:

<a class="page-link" href="{% url 'category_list' %}?filter={{ filter|urlencode }}&orderby={{ orderby|urlencode }}&page={{ page_obj.next_page_number }} ">Next</a>

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

Вернуться на верх