我正在研究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', ]
任何人都能建议更好的方法来更新/摆脱错误吗?
答案 0 :(得分:1)
'bool' object has no attribute 'has_created_artist_profile'
表示您尝试访问布尔对象(has_created_artist_profile
或True
)的属性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>
对象。