背景
我正在嘗試加載一個自定義 url(例如www.mysite.com/order-2523432),它將向用戶顯示有關其訂單的詳細資訊。
問題
我正在嘗試在我的 models.py 中使用 order_id 方法來獲取正確的 url。問題是我收到了錯誤:
'OrderDetailView' object has no attribute 'order_id'
有誰知道我可以做些什么來讓 order_id 作業?
我的意見.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()
我的模型.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,))
uj5u.com熱心網友回復:
您應該使用self.objectorcontext['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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/422730.html
標籤:
