Мой объект представления 'не имеет атрибута' {мой атрибут} в Django

Фон

Я пытаюсь загрузить пользовательский url (например, www.mysite.com/order-2523432), который покажет пользователю подробную информацию о его заказе.

Проблема

Я пытаюсь использовать метод order_id в моем models.py, чтобы получить правильный url. Проблема в том, что я получаю ошибку:

'OrderDetailView' object has no attribute 'order_id'

Кто-нибудь знает, что я могу сделать, чтобы заставить order_id работать?

Мой views.py:

class OrderDetailView(DetailView):
    model = Orders
    template_name = "customer/orders.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        try:
            context["orders"] = get_orders(self)
        except RequestException as e:
            logger.exception(e)
        return context

Мой utils.py:

def get_orders(orders):
    url = f"mysite.com/customer/{orders.order_id}"
    method = "GET"
    content_type = "application/json"
    header = Sender(
        credentials etc
    ).request_header
    response = requests.request(
        headers etc
    )
    response.raise_for_status()
    return response.json()

Мой models.py:

class Orders(CustomModel):
    table_name = models.CharField(max_length=256, unique=True)

    @property
    def order_id(self):
        return f"order-{self.table_name}"

    def get_absolute_url(self):
        return reverse("order:edit", args=(self.id,))

вы должны использовать self.object или context['object'] или get_object() вместо передачи self
пожалуйста, попробуйте это:

class OrderDetailView(DetailView):
    model = Orders
    template_name = "customer/orders.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        try:
            context["orders"] = get_orders(context['object'])
        except RequestException as e:
            logger.exception(e)
        return context
Вернуться на верх