У меня есть веб-сайт, который я пытаюсь создать для личного использования, и у него есть два идентификатора: один для встречи (где проходит гонка) и один для мероприятия (номер гонки).Идентификатор события имеет вид «123456_01» и передается в модели в качестве первичного ключа для модели события, как показано ниже ...
class Event(models.Model):
meeting = models.CharField(max_length=500)
meetingID = models.ForeignKey(Meeting, on_delete='CASCADE', related_name='races')
eventID = models.CharField(max_length=300, primary_key=True)
venue = models.CharField(max_length=600, null=True)
race_no = models.CharField(max_length=2)
event_time = models.TimeField()
status = models.CharField(max_length=100)
distance = models.CharField(max_length=600)
В настоящее время файл представлений настроен какследует:
class EventDetailView(DetailView,LoginRequiredMixin):
context_object_name = 'race_detail'
template_name = 'event.html'
model = models.Event
slug_url_kwarg = 'eventID'
У меня также настроен внешний интерфейс, так что в настоящее время, когда я нажимаю на определенную расу, он автоматически переходит на страницу со ссылкой http://127.0.0.1:8000/app/123456_01/,, так что частьработая с этим конфигом в HTML:
{% url 'bettingUI:race' eventID=events.eventID %}
проблема, с которой я, похоже, сталкиваюсь, связана с конфигурацией файла urls.py и, возможно, чего-то, чего мне не хватает в файле views.py.
мой файл urls.py настроен следующим образом:
from django.urls import path, include
from . import views
app_name = 'bettingUI'
urlpatterns = [
path('',views.DashListView.as_view(),name='dashboard'),
path('<eventID>/', views.EventDetailView.as_view(), name='race'),
]
При чтении документов я подумал, что мне нужно использовать слаг из-за символа '_' в идентификаторе, который я передаюно я постоянно получаю сообщение об ошибке в браузере, утверждающее, что он не может разрешить ключевое слово "slug" в поле.Возможные варианты: dro_eventID, dro_meetingID, dro_meetingID_id, event_time, собрание, race_no, участники, статус, место проведения (** поля модели).Если я изменю файл urls.py на приведенный ниже, я получу ту же ошибку:
path('<slug:eventID>/', views.EventDetailView.as_view(), name='race'),
Я немного растерялся, поэтому хотел бы получить рекомендации.
Спасибо.
Я сработал, ответ - ввести <slug:pk>
, но теперь я получаю сообщение об ошибке на своей информационной панели (страница, на которую я попадаю, чтобы перейти на страницу гонки):
NoReverseMatch at /app/
Reverse for 'race' with keyword arguments '{'eventID': '1216859_01'}' not found. 1 pattern(s) tried: ['app/(?P<pk>[-a-zA-Z0-9_]+)/$']