我想有一个链接到页面 make-appointment
的按钮template.html
{% for key, value in closest_free_spots.items %}
...
<a href="{% url 'make-appointment' value.pk %}"><button type="button">{{ value.datetime }}</button></a>
urls.py
url(r'^umowienie-spotkania/(?P<pk>\d+)/$', TestPy.views.MakingAppointmentView.as_view(),
name='make-appointment'),
但是,当我尝试启动它时,出现错误:
Reverse for 'make-appointment' with arguments '('',)' not found. 1 pattern(s) tried: ['umowienie-spotkania/(?P<pk>\\d+)/$']
值value.pk似乎不正确,但是当我在上面一行打印时,它给出了正确的值(即4)。
出什么问题了?我想念的是什么?
closest_free_spots定义-值是 CalendarFreeSlot 模型中的对象
closest_free_spots = {
lawyer: TestPy.models.CalendarFreeSlot.objects.filter(Q(lawyer_id=lawyer) & Q(is_available=True)).first() for
lawyer in object_list}
models.py
class CalendarFreeSlot(models.Model):
lawyer_id = models.ForeignKey('MyUser', on_delete=models.PROTECT)
datetime = models.DateTimeField()
is_available = models.BooleanField(default=True)
答案 0 :(得分:1)
您的closest_free_spots
字典理解使用CalendarFreeSlot.objects.filter(...).first()
,它可以返回None
。这会导致错误消息的with arguments '('',)'
部分。
在模板中检查{{ value.pk }}
是个好主意,但是您似乎错过了字典中没有每一项的价值。
您可以通过检查模板中的{% if value %}
来解决此问题。
{% for key, value in closest_free_spots.items %}
{% if value %}
<a href="{% url 'make-appointment' value.pk %}"><button type="button">{{ value.datetime }}</button></a>
{% else %}
{{ key }} has not free spots
{% endif %}
{% endfor %}