类的未解析属性引用“对象”

时间:2020-03-03 11:08:11

标签: python django

我对编码和尝试在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})

1 个答案:

答案 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'))
相关问题