Python NoReverseMatch at/availability/1/edit/Reverse for';可用性列表';没有找到任何参数。已尝试:[';可用性\/(?P<;pk>;[0-9]+;)\\\/列表$';]
当我尝试1)创建一个新对象(CreateView)或2)编辑一个现有对象(UpdateView)时,使用Django 3会出现这个错误。使用CBV和ModelForms 我探讨了有关Stackoverflow的类似问题。很多时候,这是关于模板缺少pk引用,但我三次检查,似乎不是这样 有什么想法吗 这是我的密码: URLPython NoReverseMatch at/availability/1/edit/Reverse for';可用性列表';没有找到任何参数。已尝试:[';可用性\/(?P<;pk>;[0-9]+;)\\\/列表$';],python,django,Python,Django,当我尝试1)创建一个新对象(CreateView)或2)编辑一个现有对象(UpdateView)时,使用Django 3会出现这个错误。使用CBV和ModelForms 我探讨了有关Stackoverflow的类似问题。很多时候,这是关于模板缺少pk引用,但我三次检查,似乎不是这样 有什么想法吗 这是我的密码: URL path('availability/<int:pk>/list', views.AvailabilityListView.as_view(), name='avai
path('availability/<int:pk>/list', views.AvailabilityListView.as_view(), name='availability_list'),
path('availability/new/', views.AvailabilityCreateView.as_view(), name='availability_new'),
path('availability/<int:pk>/edit/', views.AvailabilityUpdateView.as_view(), name='availability_edit'),
class AvailabilityUpdateView(UpdateView):
template_name = 'crm/availability_form.html'
form_class = AvailabilityForm
model = Availability
class AvailabilityUpdateView(UpdateView):
template_name = 'crm/availability_form.html'
form_class = AvailabilityForm
model = Availability
class AvailabilityListView(TemplateView):
template_name = 'crm/availability_list.html'
def get_context_data(self, **kwargs):
user = self.request.user
kwargs['availabilities'] = Availability.objects.filter(staff__manager=Manager.objects.get(user=user)).filter(staff=self.kwargs['pk'])
return super().get_context_data(**kwargs)
class AvailabilityForm(forms.ModelForm):
class Meta():
model = Availability
exclude = []
class Availability(models.Model):
staff = models.ForeignKey(Staff, on_delete=models.CASCADE)
start = models.DateTimeField()
end = models.DateTimeField()
class Meta:
verbose_name_plural = "Availabilities"
def get_absolute_url(self):
return reverse('staff_list')
表格
path('availability/<int:pk>/list', views.AvailabilityListView.as_view(), name='availability_list'),
path('availability/new/', views.AvailabilityCreateView.as_view(), name='availability_new'),
path('availability/<int:pk>/edit/', views.AvailabilityUpdateView.as_view(), name='availability_edit'),
class AvailabilityUpdateView(UpdateView):
template_name = 'crm/availability_form.html'
form_class = AvailabilityForm
model = Availability
class AvailabilityUpdateView(UpdateView):
template_name = 'crm/availability_form.html'
form_class = AvailabilityForm
model = Availability
class AvailabilityListView(TemplateView):
template_name = 'crm/availability_list.html'
def get_context_data(self, **kwargs):
user = self.request.user
kwargs['availabilities'] = Availability.objects.filter(staff__manager=Manager.objects.get(user=user)).filter(staff=self.kwargs['pk'])
return super().get_context_data(**kwargs)
class AvailabilityForm(forms.ModelForm):
class Meta():
model = Availability
exclude = []
class Availability(models.Model):
staff = models.ForeignKey(Staff, on_delete=models.CASCADE)
start = models.DateTimeField()
end = models.DateTimeField()
class Meta:
verbose_name_plural = "Availabilities"
def get_absolute_url(self):
return reverse('staff_list')
型号
path('availability/<int:pk>/list', views.AvailabilityListView.as_view(), name='availability_list'),
path('availability/new/', views.AvailabilityCreateView.as_view(), name='availability_new'),
path('availability/<int:pk>/edit/', views.AvailabilityUpdateView.as_view(), name='availability_edit'),
class AvailabilityUpdateView(UpdateView):
template_name = 'crm/availability_form.html'
form_class = AvailabilityForm
model = Availability
class AvailabilityUpdateView(UpdateView):
template_name = 'crm/availability_form.html'
form_class = AvailabilityForm
model = Availability
class AvailabilityListView(TemplateView):
template_name = 'crm/availability_list.html'
def get_context_data(self, **kwargs):
user = self.request.user
kwargs['availabilities'] = Availability.objects.filter(staff__manager=Manager.objects.get(user=user)).filter(staff=self.kwargs['pk'])
return super().get_context_data(**kwargs)
class AvailabilityForm(forms.ModelForm):
class Meta():
model = Availability
exclude = []
class Availability(models.Model):
staff = models.ForeignKey(Staff, on_delete=models.CASCADE)
start = models.DateTimeField()
end = models.DateTimeField()
class Meta:
verbose_name_plural = "Availabilities"
def get_absolute_url(self):
return reverse('staff_list')
模板
{% block body_block %}
<div class="container">
<div class="heading">
<h1>Availability</h1>
<a class = 'btn btn-primary' href="{% url 'availability_new' %}">+Create new availability</a>
</div>
<hr/>
{% if availabilities %}
<table class="table">
<tbody>
{% for availability in availabilities %}
<tr>
<td>{{availability.pk}}</td>
<td>{{availability.staff}}</td>
<td>{{availability.start}}</td>
<td>{{availability.end}}</td>
<td>
<a href="{% url 'availability_edit' pk=availability.pk %}">Edit</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<p class='empty'>Staff does not have any availability</p>
{% endif %}
</div>
{% endblock %}
{%block body\u block%}
可利用性
{%if可用性%}
{availabilities%%中的可用性百分比}
{{availability.pk}}
{{availability.staff}
{{availability.start}
{{availability.end}
{%endfor%}
{%else%}
员工没有任何空闲时间
{%endif%}
{%endblock%}
问题标题中的错误表示您在某处试图调用反向
,而没有任何主键
。AvailabiltyList
视图在哪里?你能把它和你的其他观点一起发布吗?(另外,我没有看到您使用模型上的staff_list
视图。)您需要使用re_path
而不是path
谢谢您的反馈!是的,我刚刚用AvailabiltyList视图更新了这个问题。我花了一些时间,意识到更新和删除模板都称为AvailabiltyList视图,但没有为其分配pk。出于某种原因,我认为错误与当前模板有关,但与更新和删除模板有关。我的不好。只是为了让其他处于类似情况的人更清楚:更新和删除模板称为AvailabilitList视图(例如:{%url'可用性\列表'%}}),但没有为其分配pk(例如:{%url'可用性\列表'pk=availability.pk%})。我的困惑来自这样一个事实,即通常“列表”不需要pk分配。但是在这里,我使用视图AvailabiltyList名称中的“list”来指代特定用户的可用性列表(实际上是一个详细视图)。因此,它需要pk分配。