Я хочу создать представление, которое отображает данные из внешнего ключа в Django.
У меня есть несколько парикмахеров, которые доступны в определенные даты, и я хочу посмотреть, в какие дни парикмахер доступен. Позже мне нужно знать, какие парикмахеры доступны на какие даты.
models.py
from django.db import models
from datetime import time
class Barber(models.Model):
BARBERS = (
('KK', 'Kim Kardashian'),
('CJ', 'Caitlin Jenner'),
('KW', 'Kanye West')
)
LOCATION = (
('CL', 'Central Detroit'),
('NL', 'North Detroit'),
('SL', 'South Detroit'),
('EL', 'East Detroit'),
('WL', 'West Detroit'),
)
name = models.CharField(max_length=2, choices=BARBERS)
location = models.CharField(max_length=2, choices=LOCATION)
def __str__(self):
return self.name
class Date(models.Model):
date = models.DateField()
name = models.ForeignKey(Barber, on_delete=models.CASCADE)
urls.py в моем приложении
from django.urls import path
from .views import schedule, appointments
urlpatterns = [
path('', schedule, name='schedule'),
path('/appointments/<int:id>/', appointments, name='appointments')
views.py
from django.shortcuts import render, redirect
from .models import Barber, Date
def schedule(request):
barber = Barber.objects.all()
return render(request, 'schedule.html', {'barber': barber})
def appointments(request, name):
dates = Date.objects.filter(name=name)
return render(request, 'appointments.html', {'date': dates})
appointments.html
<h1>Appointments</h1>
<ul>
{% for date in dates %}
<li> {{ date.name }} {{ date.dates }} </li>
{% endfor %}
</ul>
schedule.html:
<h1>Schedule</h1>
<ul>
{% for barb in barber %}
<a href="{% url 'appointments' Barber.id %}">
<li> {{ barb.name }} {{ barb.location }} </li>
{% endfor %}
</ul>
Я получаю ошибку:
Reverse for 'appointments' with arguments '('',)' not found. 1 pattern(s) tried: ['\\/appointments\\/(?P<id>[0-9]+)\\/$']