ViL*_*uWi 2 python django django-models
我正在开发一个投注应用程序/猜谜应用程序。用户可以在所有 NFL 比赛上下注并猜测正确的结果。所以我做了 4 个模型(2 个与我当前的问题相关):
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)
...
Run Code Online (Sandbox Code Playgroud)
因此,用户每周可以下注 16 场比赛。为此,我创建了一个表单并在模板中实现:
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,
})
Run Code Online (Sandbox Code Playgroud)
一切正常,但现在如果有新用户注册,我不想在每个游戏日创造 17 个新的星期和 16 场比赛!有没有办法说:如果有新用户登录,在Tipp中创建17个新对象并设置user = new User?
您可以为此使用信号,以便每次创建新用户时,也会创建新对象Tipp,例如:
from django.db.models.signals import post_save
from django.dispatch import receiver
from .models import Tipp
@receiver(post_save, sender=User)
def create_user_picks(sender, instance, created, **kwargs):
if created:
Tipp.objects.create(user=instance)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
245 次 |
| 最近记录: |