Я пытаюсь настроить что-то с помощью Django 1.11 и python для своей работы, где он будет отображать список проектов, представленных вошедшим в систему пользователем. Пользователь может щелкнуть имя проекта, и пользователь перейдет к этому проекту, чтобы отредактировать его, если это необходимо. У меня он показывает список проектов, но когда пользователь щелкает имя, я получаю сообщение об ошибке. Он отлично работает, когда для этого пользователя отображается только 1 проект. Ошибка и мой код ниже.
MultipleObjectsReturned в /edit/ get() вернул более одного проекта — он вернул 2! Метод запроса: URL запроса GET: http://127.0.0.1:8000/edit/ Версия Django : 1.11 Тип исключения: MultipleObjectsReturned Значение исключения:
get() вернул более одного проекта -- он вернул 2!
url.py
urlpatterns = [
url(r'^index/',views.Index.as_view(),name='index'),
url(r'^form/', views.Form.as_view(), name = 'form'),
url(r'^edit/', views.EditProject.as_view(), name = 'editProject'),
]
просмотры.py
class Index(LoginRequiredMixin,ListView):
template_name = 'sitename/index.html'
form_class = IndexForm
def get_queryset(self):
return Project.objects.filter(user=self.request.user)
class EditProject(LoginRequiredMixin, UpdateView):
template_name = 'irbSite/form.html'
form_class = ProjectForm
success_url = reverse_lazy('irbSite:index')
# works only when there is 1 project object
def get_object(self):
return Project.objects.get(user=self.request.user)
index.html
{% if user.is_authenticated %}
{% if project_list %}
<tr>
<th>Project Number</th>
<th>Project Name</th>
<th>Is Complete</th>
<th>Is Approved</th>
</tr>
{% for project in project_list %}
<tr>
<td><a href="{% url 'irbSite:editProject'%}">{{project.project_id}}</td>
<td>{{project.project_name}}</a></td>
<td>{{project.is_complete}}</td>
<td>{{project.is_approved}}</td>
{% endfor %}
</tr>
{% else %}
<p>You dont have any current IRB forms. Select "Submit New Project" on the left to start one.<p>