当我试图从list视图访问detail视图时,我会得到以下错误。
奇怪的是,有些细节意见是可行的,有些则不行,我不明白问题在哪里。例如,下面是使用pk=1的组织的详细视图
组织模型
class Organisation(models.Model):
code = models.CharField(max_length=256, unique=True)
name = models.CharField(max_length=256, null=True)
english_name = models.CharField(max_length=256, null=True)
location = models.CharField(max_length=256, null=True)
country = models.ForeignKey('space_missions.Country',
on_delete=models.SET_NULL, null=True, blank=True)
longitude = models.FloatField(null=True)
latitude = models.FloatField(null=True)
parent_organisation = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True)视图
class OrganisationDetail(generic.DetailView):
model = models.Organisation
class OrganisationList(generic.ListView):
model = models.Organisationorganisation_list.html
{% extends 'base.html' %}
{% block content %}
<h1>Organisation List</h1>
{% if organisation_list %}
<ul>
{% for organisation in organisation_list %}
<li>
<a href="{% url 'space_missions:organisation-detail' pk=organisation.pk %}">
{{ organisation.name }}
</a>
</li>
{% endfor %}
</ul>
{% else %}
<p>No organisation is stored in the database!</p>
{% endif %}
{% endblock %}organisation_detail.html
{% extends 'base.html' %}
{% block content %}
<div class="container">
<h1>{{ organisation.name }}'s details:</h1>
<ul>
<li><strong>Code: </strong> {{ organisation.code }}</li>
<li><strong>English Name: </strong> {{ organisation.english_name }}</li>
<li><strong>Location: </strong> {{ organisation.location }}</li>
<li><strong>Country: </strong>
<a href="{% url 'space_missions:country-detail' pk=organisation.country_id %}">
{{ organisation.country.name }}
</a>
</li>
<li><strong>Longitude: </strong> {{ organisation.longitude }}</li>
<li><strong>Latitude: </strong> {{ organisation.latitude }}</li>
<li>
<strong>Parent organisation: </strong>
<a href="{% url 'space_missions:organisation-detail' pk=organisation.parent_organisation_id %}">
{{ organisation.parent_organisation.name }}
</a>
</li>
</ul>
</div>
{% endblock %}urls.py
from django.urls import path
from . import views
app_name = 'space_missions'
urlpatterns = [
path('countries/', views.CountryList.as_view(), name='countries'),
path('country/<int:pk>/', views.CountryDetail.as_view(), name='country-detail'),
path('astronauts/', views.AstronautList.as_view(), name='astronauts'),
path('astronaut/<int:pk>/', views.AstronautDetail.as_view(), name='astronaut-detail'),
path('organisations/', views.OrganisationList.as_view(), name='organisations'),
path('organisation/<int:pk>/', views.OrganisationDetail.as_view(), name='organisation-detail'),
path('engines/', views.EngineList.as_view(), name='engines'),
path('engine/<int:pk>/', views.EngineDetail.as_view(), name='engine-detail'),
path('stages/', views.StageList.as_view(), name='stages'),
path('stage/<int:pk>/', views.StageDetail.as_view(), name='stage-detail'),
path('launchvehicles/', views.LaunchVehicleList.as_view(), name='launch-vehicles'),
path('launchvehicle/<int:pk>/', views.LaunchVehicleDetail.as_view(), name='launch-vehicle-detail'),
path('missions/', views.MissionList.as_view(), name='missions'),
path('mission/<int:pk>/', views.MissionDetail.as_view(), name='mission-detail'),
path('selections/', views.SelectionList.as_view(), name='selections'),
path('selection/<int:pk>/', views.SelectionDetail.as_view(), name='selection-detail')
]发布于 2021-04-27 16:58:26
当parent_organisation为None时,您的详细信息页将无法用pk=None找到组织详细信息的url。
<a href="{% url 'space_missions:organisation-detail' pk=organisation.parent_organisation_id %}">
{{ organisation.parent_organisation.name }}
</a>用if块包装代码
{% if organisation.parent_organisation_id %}
<a href="{% url 'space_missions:organisation-detail' pk=organisation.parent_organisation_id %}">
{{ organisation.parent_organisation.name }}
</a>
{% endif %}https://stackoverflow.com/questions/67287326
复制相似问题