Как мне реализовать систему, в которой конкретный пользователь записывается на конкретное мероприятие (Django)?
Я хочу создать приложение для регистрации на мероприятия, но столкнулся с проблемой. Я создал систему, в которой пользователь добавляется к событию, когда он запускает просмотр, но при этом пользователь подписывается на все события, а не только на одно. Как мне сделать так, чтобы пользователь подписывался на то мероприятие, которое он выбирает?
models.py:
from django.db import models
from django.contrib.auth.models import User
class UserA(models.Model):
user = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
def __str__(self):
return self.user.username
class systemTitle(models.Model):
title = models.CharField('Title', max_length=300)
time = models.DateTimeField('Time')
place = models.CharField('Place', max_length=500)
description = models.TextField('Description')
people = models.IntegerField('Free Spaces', default=50)
users = models.ManyToManyField(UserA, blank="True")
class Meta:
verbose_name = 'Event'
verbose_name_plural = 'Events'
def __str__(self):
return self.title
return self.place
views.py:
from django.shortcuts import render
from .models import systemTitle
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from email.message import EmailMessage
import smtplib
@login_required
def index(request):
latest_activities = systemTitle.objects.order_by('-time')[:5]
context = {'latest_activities': latest_activities}
return render(request, 'systema/index.html', context)
def details(request, systemTitle_id):
try:
systemT = systemTitle.objects.get(pk=systemTitle_id)
except systemTitle.DoesNotExist:
print('error')
return render(request, 'systema/details.html', { 'systemT' : systemT })
def success(request, systemTitle_id):
user = request.user
user_email = user.email
systemT = systemTitle.objects.get(id=systemTitle_id)
systemT.people -= 1
systemT.users.create(user=user)
systemT.save()
return render(request, 'systema/success.html', { 'systemT' : systemT })
Заранее спасибо :D