【发布时间】:2018-10-16 13:16:51
【问题描述】:
我想在 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]+)\\/$']
【问题讨论】:
-
该错误是由
url模板标签引起的。你能检查你的模板中是否有{% url 'appointments' %}吗?您需要在url标记中传递一个 id 以进行约会。 -
在模板的某个地方,您错过了
id -
我在一个单独的 html 模板中传递 ,该模板应该链接到约会.html
-
然后您需要显示该模板以及呈现它的视图。只显示不相关的代码是没有意义的。
-
这个
{% url 'appointments' Barber.id %}应该是{% url 'appointments' barb.id %}.. 但是你仍然会在你的视图中遇到另一个问题appointments(request,name)
标签: python django django-models foreign-keys