Запросы Django 1.11 не работают

Я пытаюсь настроить что-то с помощью 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>

person javaNewbie    schedule 09.04.2018    source источник


Ответы (1)


используйте .filter для получения нескольких объектов при запросе.

Пример:

def get_object(self):
    return Project.objects.filter(user=self.request.user)
person Rakesh    schedule 09.04.2018
comment
Привет, Ракеш, я могу получить несколько объектов, но после этого мне нужно иметь возможность щелкнуть один из них, чтобы просмотреть его. Вот когда я получаю сообщение об ошибке MultipleObjectsReturned - person javaNewbie; 09.04.2018