У меня есть форма регистрации на событие. Поскольку эта форма регистрации отображается как модальная при нажатии кнопки «Зарегистрироваться» на странице события, я знаю, на какое событие пользователь хочет зарегистрироваться. Но Джанго этого не делает, поскольку я не знаю, как реализовать это в коде.
У меня есть две модели: Participant
и Event
. Каждый экземпляр Participant
ссылается на экземпляр Event
посредством ForeignKey
. Как мне установить это ForeignKey
в зависимости от слага на странице события?
Это мой пример кода:
models.py:
from django.db import models
class Event(models.Model):
name = models.CharField(max_length=50)
description = models.CharField(max_length=500)
#<...>
slug = models.SlugField()
class Participant(models.Model):
name = models.CharField(max_length=200)
email = models.EmailField()
event = models.ForeignKey(Event, on_delete=models.CASCADE)
forms.py:
from django.forms import ModelForm
from .models import Participant
class ParticipantForm(ModelForm):
class Meta:
model = Participant
fields = ['name', 'email']
views.py:
from django.template.loader import render_to_string
from django.views import generic
from .models import *
from .forms import *
class RegistrationView(generic.FormView):
template_name = 'me/registration.html'
form_class = ParticipantForm
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['event'] = Event.objects.get(slug=self.args[0])
return context
def form_valid(self, form):
form.save()
return HttpResponse(render_to_string('me/registration-complete.html', {'event': Event.objects.get(slug=self.args[0])}))