AttributeError:' bool'对象没有属性

时间:2018-05-15 23:17:22

标签: python django django-forms django-views

我正在研究Django项目,基本上我已经编写了一个存储用户详细信息的模型。他们在注册后完成此配置文件,我在用户模型中有一个布尔值,表明他们是否已完成此自定义配置文件,因此我可以在模板中进行更改。

当提交第二个个人资料页面的表单时,我希望它将Bool从False更新为True,但我收到错误:

'bool' object has no attribute 'has_created_artist_profile'

见下面的代码:

views.py

def ArtistEditView(request):
    artist = Artist.objects.get(user=request.user)
    current_artist = request.user
    artist_status = current_artist.has_created_artist_profile

    if request.method == 'POST':
        form = ArtistForm(request.POST, request.FILES, instance=artist)
        if form.is_valid():
            artist_status.has_created_artist_profile = True
            artist_status.save()
            form.save()
            return redirect(reverse('artist_home'))
    else:
        artist_dict = model_to_dict(artist)
        form = ArtistForm(artist_dict)
    return render(request, 'artist/artist_edit.html', {'form': form})

forms.py

class ArtistForm(forms.ModelForm):
    class Meta:
        model = Artist
        exclude =['user', ]

任何人都能建议更好的方法来更新/摆脱错误吗?

1 个答案:

答案 0 :(得分:1)

'bool' object has no attribute 'has_created_artist_profile'表示您尝试访问布尔对象(has_created_artist_profileTrue)的属性False,而不是对象的属性True.has_created_artist_profile。 / p>

例如: artist_status会产生完全相同的错误。

从代码中,将current_artist设置为属于对象(artist_status)的布尔值,然后尝试从该布尔值访问属性。

根据建议,您已删除了current_artist变量,并且您现在正在直接使用<script> if (document.documentElement.clientWidth < 600) {var prevScrollpos = window.pageYOffset; window.onscroll = function() { var currentScrollPos = window.pageYOffset; if (prevScrollpos > currentScrollPos) { document.getElementById("navbar").style.top = "0"; } else { document.getElementById("navbar").style.top = "-50px"; } prevScrollpos = currentScrollPos; }} </script>对象。