我有一個與 Customer 和 Barber 模型相關的預訂課程。我可以使用詳細視圖顯示所有預訂,但是無法弄清楚如何顯示特定理發師的預訂。基本上,我想根據提供給 url 的 ID 獲得一個或多個理發師的預訂。
這是我的模型:
customer_id = models.ForeignKey(User, on_delete = models.CASCADE,)
barber_id = models.ForeignKey(Barber, on_delete = models.CASCADE)
timeslot = models.DateTimeField('appointment')
def __str__(self):
return f"{self.customer_id} {self.barber_id} {self.timeslot}"
def get_absolute_url(self):
return reverse("model_detail", kwargs={"pk": self.pk})
我的觀點:
class GetBarberBooking(DetailView):
model = Booking
template_name = "barber_booking.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['barber'] = Booking.objects.filter(
id=self.kwargs.get('<str:pk'))
return context
我的網址路徑:
path('barber-booking/<str:pk>/', views.GetBarberBooking.as_view(), name='barber-booking'),
uj5u.com熱心網友回復:
您可以洗掉這段代碼:
context['barber'] = Booking.objects.filter(
id=self.kwargs.get('<str:pk'))
在模板中只需使用:
{{ object.barber_id }}
并顯示所有理發師的預訂:
{{ object.barber_id.booking_set.all }}
它將顯示所有理發師。這是因為 Booking 和 Barber 模型之間的 FK 關系。更多資訊可以在Django 檔案中找到。對于反向關系(多對一),請查看此檔案。
僅供參考,您不需要使用 . 創建欄位名稱后綴_id,因為 Django 會自動為您創建。
另外,如果你想查詢一個理發師,那么你應該使用理發師作為 DetailView 中的模型。然后您可以使用上面提到的類似查詢:
# view
class GetBarberBooking(DetailView):
model = Barber
# template
{{ object.booking_set.all }}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/513966.html
標籤:Pythondjango班级django-rest-frameworkdjango-views
