Список всех заказов на веб-сайте администратора в Django - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь создать панель управления администратора, отличную от существующей, чтобы лучше просматривать некоторые заказы, сделанные в проекте электронной коммерции.

Я пытаюсь перечислить все заказы, сделанные для быть в виде списка, но я получаю следующую ошибку: __init__() takes 1 positional argument but 2 were given

Я пытался исправить, но не уверен, что root этого.

Вот вид. py, который уже работает для просмотра пользователями

class OrderList(LoginRequiredMixin, ListView):
    model = Order
    template_name = "user_orders.html"
    context_object_name = 'orders'
    paginate_by = 2
    ordering = ['-ordered_date']
    queryset = Order.objects.filter(ordered=True).order_by('-ordered_date')

    def get_queryset(self):
        return Order.objects.filter(user=self.request.user, ordered=True).order_by('-ordered_date')

Это представление, которое я пытаюсь создать для администратора только для объединения заказов вместе

@staff_member_required
class Control_Order_List(ListView):
    model = Order
    template_name = "control_all_orders.html"
    context_object_name = 'orders'
    paginate_by = 2
    ordering = ['-ordered_date']
    queryset = Order.objects.filter(ordered=True).order_by('-ordered_date')

    def get_queryset(self):
        return Order.objects.filter(user=self.user, ordered=True).order_by('-ordered_date')

Вот URL-адреса. ру

app_name = 'newsletters'

urlpatterns = [
    path('', views.index, name='index'),
    path('newsletter/', control_newsletter, name="control_newsletter"),
    path('control_all_orders', Control_Order_List,
         name="control_all_orders"),
]

Ответы [ 2 ]

2 голосов
/ 01 августа 2020
urlpatterns = [
    # ...
    path('control_all_orders', Control_Order_List.as_view(), name="control_all_orders"),
]

Вам необходимо использовать атрибут .as_view() для представлений на основе классов в URL-адресах.

EDIT

Для представлений на основе классов необходимо добавьте такие декораторы:

from django.utils.decorators import method_decorator

@method_decorator(staff_member_required, name='dispatch')
class Control_Order_List(ListView):
    # ...

Вот что вы сделали неправильно:

# Do NOT apply the decorator directly for classes, like
@staff_member_required
class AnyClassBasedView():

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

0 голосов
/ 01 августа 2020

Вам необходимо изменить path следующим образом:

path('control_all_orders', Control_Order_List.as_view(),
     name="control_all_orders"),

То есть добавить .as_view()

Если это не решит вашу проблему, опубликуйте всю трассировку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...