I have models MyEvent
and MyEventRegistration
. Each MyEventRegistration
represents the registration to specific MyEvent
.
Below is the code I have. I would like to, when the registration form is submitted, check if there is already similar registration - if yes, I would like to show the user message/warning/error “This registration already exists” (or something similar).
I need to check if there already exists MyEventRegistration
object with the same name
, email
and event
(the note
is not importatant) and if YES, then show the message “This registration already exists”. How can I achieve that ?
Perfect would be if this would be shown within the form as some kind of validation error.
# MODEL
class MyEventRegistration(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
note = models.TextField(blank=True, null=True)
event = models.ForeignKey(MyEvent, on_delete=models.CASCADE)
# FORM
class MyEventRegistrationForm(forms.ModelForm):
class Meta:
model = MyEventRegistration
fields = ['name','email','note']
# VIEW FUNCTION
def register_for_event(request,pk):
my_event = MyEvent.objects.get(id=pk) # get event for which the registration is to be done
if request.method == 'POST':
form = MyEventRegistration(request.POST)
if form.is_valid():
r = form.save(commit=False)
r.event = my_event
r.save()
task_new_event_registered(r.id) # task for sending 'thank you' email to user
return redirect('myapp:show_events_page') # show page with all events
else:
# otherwise show empty form
form = MyEventRegistrationForm()
context = {'my_event': my_event, 'form': form}
return render(request, 'myapp/EventRegistrationPage.html', context) # show page with registration form