I am working on a bet app / guessing app. The user can bet on all NFL games and guess the correct result. So I made 4 Models (2 relevant for my current problem):
class Customer(models.Model):
name = models.ForeignKey(User,on_delete=models.CASCADE)
points = models.IntegerField(null=True, default=0)
class Tipp(models.Model):
# model for one gameday (17 gamedays at all)
user = models.ForeignKey(Customer, on_delete=models.CASCADE, null=True, blank=True)
week = models.ForeignKey(Game, on_delete=models.CASCADE, null=True, blank=True)
result_hometeam1 = models.IntegerField(null=True, blank=True)
result_guestteam1 = models.IntegerField(null=True, blank=True)
...
So there are 16 games every week the user can bet. For this I created a form and implement in the template:
class Tipp_form(ModelForm):
class Meta:
model = Tipp
fields = '__all__'
# views.py
def week(request, pk):
game = Tipp.objects.get(id=pk)
form = Tipp_form(initial={'user':request.user, 'week':game}, instance=game)
if request.method == 'POST':
form = Tipp_form(request.POST, instance=game)
if form.is_valid():
form.save()
return render(request, 'main/week.html', {
'game': game,
'form': form,
})
everything is working perfectly but now if a new user register I dont want to create 17 new weeks with 16 games every gameday! Is there a way to say: if a new user is logged in, create 17 new objects in Tipp and set user = new User?