Форум сайта python.su
Пытаюсь сформировать вывод 2 страниц. Первая выводит список всех моделей определенного города, вторая - конкретную модель. При попытке вывода модели в html шаблоне появляется ошибка. При открытии страницы (используем ф-ию viewtrainers )по адресу site.ru/trainers/city все отрабатывает, появляется список участников. При открытии (используем функцию viewperson) по адресу site.ru/trainers/name получаю ошибку
DoesNotExist at /trainers/vasyuta-anton/
Cities matching query does not exist.
trainers_town = Cities.objects.get(slug = slug)
from django.conf.urls import url, include
from trainers.views import viewtrainers, viewperson
app_name = 'trainers'
urlpatterns = [
url(r'^(?P<slug>[-\w]+)/$', viewtrainers, name='viewtrainers'),
url(r'^(?P<slug>[-\w]+)/$', viewperson, name='viewperson'),
]
[b]views.py[/b]
from django.shortcuts import render
from trainers.models import Trainer, Cities
# Вывод списка всех участников привязанных к определенному городу
def viewtrainers(request, slug):
trainers_town = Cities.objects.get(slug = slug)
trainers = Trainer.objects.all()
return render(request, "trainers.html", {'trainers_town':trainers_town, 'trainers':trainers })
def viewperson(request, slug):
trainer = Trainer.objects.get(slug = slug)
return render(request, "trainer_person.html", {'trainer':trainer})
from django.db import models
from django.utils.text import slugify
class Cities(models.Model):
city = models.CharField(max_length=50, verbose_name="Город")
slug = models.SlugField(unique = True, default = '')
def __str__(self):
return self.city
class Trainer(models.Model):
city = models.ForeignKey('Cities', verbose_name="Город")
name = models.CharField(max_length=100, verbose_name="Ф.И.О")
slug = models.SlugField(unique = True, default = '')
def __str__(self):
return self.name
Офлайн
lepiloff
Тут все понятно, у вас в БД нет записи с таким slug
Офлайн
В базе присутствует, иначе в админке поле было бы пустым
Офлайн
lepiloff
Обложите код принтами, проверьте точно что там за slug приходит с клиента, ошибка очевидна и другого объяснения ей нет.
Офлайн
В общем, проблема заключалась в том что при поиске подходящего регулярного выражения, поиск в urls.py шел сверху вниз и функция viewperson пыталась принять первый slug. Поменял вывод в urls.py на
url(r'^persons/(?P<slug>[-\w]+)/$', viewperson, name='viewperson')
Офлайн