Python 未解析的属性引用';对象';上课
我对用django编写代码和制作网站还很陌生。我在尝试按当前登录的用户筛选类UserBets时破坏了某些内容。谁能看出我做错了什么Python 未解析的属性引用';对象';上课,python,django,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_q
# 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})
#views.py
类UserBetListView(ListView):
model=UserBets
模板名称='betassistant/userbets.html'
上下文\u对象\u名称='我的\u赌注'
分页方式=8
def get_queryset(自我):
user=get\u object\u或_404(user,username=self.kwargs.get('username'))
返回UserBets.objects.filter(User=User)
#url.py
路径('userbets/',UserBetListView.as_view(),name='bet-userbet'),
#models.py
类UserBets(models.Model):
sport=models.CharField(最大长度=50,选项=sport\u选项,默认值=NRL')
bet_type=models.CharField(最大长度=50,选项=bet_选项,默认值=H2H')
Tipper\u Choices=models.CharField(最大长度=50,选项=Tipper\u Choices,默认值=Trypod)
bet\u amount=models.FloatField(最大长度=10,默认值=2)
赌注赔率=models.FloatField(最大长度=10,默认值=2)
result=models.CharField(最大长度=50,选项=result\u选项,默认值='Winner')
User=models.ForeignKey(用户,on_delete=models.CASCADE)
定义(自我):
回归自我运动
def get_绝对_url(自身):
返回反向('bet-detail',kwargs={'pk':self.pk})
您需要正确命名您的型号,更改
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方法更新为:
您的模型在类定义中丢失。问题可能就在那里。您还应该将结果(错误和stacktrace)插入问题,而不仅仅是标题。您可以尝试在django shell中运行UserBets.objects.all()吗?行吗?对不起,我一定把那条线剪掉了,模型已经贴上了那样的标签。视图似乎是返回UserBets.objects.filter(User=User)的问题,请尝试在get_queryset()方法中更新您的过滤器查询。
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})
def get_queryset(self):
return UserBets.objects.filter(User__username=self.kwargs.get('username'))