Получил "ValueError: неверный литерал для int() с основанием 10: 'Trancel'" при использовании двух параметров в detailview в Django
Я пытаюсь использовать два других тега URL, кроме pk и slug в подробном представлении. У меня есть следующий фрагмент кода:
класс views.py UseCaseDetailView(DetailView): template_name = "useCaseExtract/useCaseDetail.html" model = UseCaseProfile context_object_name = 'usecaseprofile' '''Я пытаюсь переопределить метод get_object DetailView, чтобы принять теги url проекта и имя пользователя вместо pk и slug''' def get_object(self): obj = get_object_or_404(UseCaseProfile, project=self.kwargs['project'], useCasename=self.kwargs['useCasename']) вернуть obj urls.py ... path('/UseCaseDetail/', UseCaseDetailView.as_view(), name='UseCaseDetail') ... в моем файле шаблона есть следующая ссылка: /Trancel/UseCaseDetail/ Ничего после того, как я щелкнул ссылку, я получил: ValueError: недопустимый литерал для int() с основанием 10: "Trancel", не могли бы вы объяснить, почему я получаю эту ошибку?
2 ответа
Тег URL проекта является внешним ключом в модели UseCaseProfile. Чтобы запросить UseCaseProfile, я изменил код get_object в подробном представлении, как показано ниже.
def get_object(self):
project=Project.objects.all()
x=project.filter(projectName=self.kwargs['project'])
obj = get_object_or_404(UseCaseProfile, project=x.first(), useCasename=self.kwargs['useCasename'])
return obj
У вас есть возможность переименовать Trance1
что-то вроде TranceOne
? Так что это не включает в себя целое число?
Я думаю, что ваша проблема в том, что 1
когда приходит время разбирать URL-адрес..(так как он ожидает укуса, но получает строку без 1
в этом).