I am writing a simple event app in django. I have register and login process.
I have two models. Model creator has one OneToOneField with attribute User.
Event model has attribute creator as ForeignKey which contain specific User.
What is my problem? When I create new user, I want to create new instance of Creator model at the same time and when I log in as that user and create new event, I want to set value of creator in Event as this user.
How can I do it? models.py and views.py below:
models.py
class Event(models.Model):
SPORT = (
('Football', 'Football'),
('Volleyball', 'Volleyball'),
('Basketball', 'Basketball'),
('Futsal', 'Futsal'),
('Tennis', 'Tennis'),
('Handball', 'Handball'),
('Ice Hockey', 'Ice Hockey'),
('Paintball', 'Paintball')
)
creator = models.ForeignKey(Creator, null=True, on_delete=models.SET_NULL)
sport = models.CharField(max_length=20, null=True, choices=SPORT)
event_name = models.CharField(max_length=30)
event_date = models.DateTimeField(default=date.today())
end_event_date = models.DateTimeField(default=date.today())
current_members = models.IntegerField(default=1)
total_members = models.IntegerField(default=0)
event_location = models.CharField(max_length=50)
cost = models.FloatField(default=0, max_length=5)
description = models.CharField(max_length=300, blank=True)
def __str__(self):
return self.event_name
class Creator(models.Model):
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
views.py
@unauthenticated_user
def registerPage(request):
form = CreateUserForm()
if request.method == 'POST':
form = CreateUserForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, 'Account created successfully!')
return redirect('login')
context = {'form': form}
return render(request, 'events/register.html', context)