Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 未解析的属性引用';对象';上课_Python_Django - Fatal编程技术网

Python 未解析的属性引用';对象';上课

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

我对用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})
#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'))