Как обновить поля модели из представления значениями из href/url?
Я делаю сайт о событиях, мне нужно показать историю событий пользователя, вошедшего в систему.
В настоящее время я передаю в нижеприведенный шаблон только экземпляр Event, а не экземпляр User
Поэтому, когда он нажимает на кнопку Register for Event на определенном событии с id event.id.
{%for event in events%}
<div class='card-event'>
<div style="font-weight: 600; margin-top:5px;font-size: 20px;">{{event.name}}</div>
<div style="margin:10px 0 5px 0;">{{event.event_desc}}</div>
<div style="margin:5px 0 10px 0;">Entry Fee: {{event.entry_fee}}</div>
<a href="{%url 'update-event' value1=user.id value2=event.id%}"><button class='register-button'>Register for Event</button></a>
</div>
{%endfor%}
Он перенаправляется на url
path('update-event/<value1>/<value2>/',web_views.update_event,name='update-event')
Затем представление update_event, где база данных обновляется, и перенаправляется на простой стабильный шаблон my_events.html
def update_event(request,value1,value2):
user= User.objects.get(id=value1)
ev=Event.objects.get(id=value2)
data=Participated(user_id=user,event_id=ev)
data.save()
return redirect(request,'webpage/my_events.html')
Это модель Participated
class Participated(models.Model):
user_id=models.ForeignKey(User,on_delete=models.CASCADE)
event_id=models.ForeignKey(Event,on_delete=models.PROTECT)
Я получаю ошибку
Reverse for '<WSGIRequest: GET '/update-event/1/4/'>' not found. '<WSGIRequest: GET '/update-event/1/4/'>' is not a valid view function or pattern name.
Как вставить значения в Partcipated model?
Путь будет пытаться найти шаблоны, которые имеют ints для user_id и event_id, если вы сделаете следующее:
# urls.py
urlpatterns = [
...
path('update-event/<int:user_id>/<int:event_id>/',web_views.update_event,name='update-event'),
...
]
Затем в вашем представлении вы можете захватить их, но они должны иметь те же имена, которые вы дали им в шаблонах url, как это:
# views.py
def update_event(request, user_id, event_id):
user= User.objects.get(id=user_id)
ev=Event.objects.get(id=event_id)
...
Тогда ваш html url anchor tage будет передавать эти два инт, в порядке:
<a href="{% url 'update-event' user.id event.id %}">