我对编码和尝试在Django中建立网站非常陌生。我在尝试通过当前登录的用户过滤UserBets类时遇到了一些问题。谁能看到我做错了吗?
# views.py
class UserBetListView(ListView):
model = UserBets
template_name = 'betassistant/userbets.html'
context_object_name = 'my_bets'
paginate_by = 8
def get_queryset(self):
user = get_object_or_404(User, username=self.kwargs.get('username'))
return UserBets.objects.filter(User=user)
# urls.py
path('userbets/<str:username>', UserBetListView.as_view(), name='bet-userbet'),
# models.py
class UserBets(models.Model):
sport = models.CharField(max_length=50, choices=sport_choices, default='NRL')
bet_type = models.CharField(max_length=50, choices=bet_choices, default='H2H')
Tipper_Choices = models.CharField(max_length=50, choices=tipper_choices, default='Trypod')
bet_ammount = models.FloatField(max_length=10, default=2)
bet_odds = models.FloatField(max_length=10, default=2)
result = models.CharField(max_length=50, choices=result_choices, default='Winner')
User = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.sport
def get_absolute_url(self):
return reverse('bet-detail', kwargs={'pk': self.pk})
答案 0 :(得分:0)
您需要正确命名模型,更改
sport = models.CharField(max_length=50, choices=sport_choices, default='NRL')
bet_type = models.CharField(max_length=50, choices=bet_choices, default='H2H')
Tipper_Choices = models.CharField(max_length=50, choices=tipper_choices, default='Trypod')
bet_ammount = models.FloatField(max_length=10, default=2)
bet_odds = models.FloatField(max_length=10, default=2)
result = models.CharField(max_length=50, choices=result_choices, default='Winner')
User = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.sport
def get_absolute_url(self):
return reverse('bet-detail', kwargs={'pk': self.pk})
到
class UserBets(models.Model):
sport = models.CharField(max_length=50, choices=sport_choices, default='NRL')
bet_type = models.CharField(max_length=50, choices=bet_choices, default='H2H')
Tipper_Choices = models.CharField(max_length=50, choices=tipper_choices, default='Trypod')
bet_ammount = models.FloatField(max_length=10, default=2)
bet_odds = models.FloatField(max_length=10, default=2)
result = models.CharField(max_length=50, choices=result_choices, default='Winner')
User = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.sport
def get_absolute_url(self):
return reverse('bet-detail', kwargs={'pk': self.pk})
将views.py中的get_queryset方法更新为:
def get_queryset(self):
return UserBets.objects.filter(User__username=self.kwargs.get('username'))