django-如何检查模型是否为空
我有设置表单页面。如果用户填写了一次表格;它必须显示这些值。但如果[第一次]没有数据,我会得到查询错误。我需要这个查询,因为表单数据必须与当前用户[登录]相关 以下是我的观点部分:django-如何检查模型是否为空,django,django-models,django-views,Django,Django Models,Django Views,我有设置表单页面。如果用户填写了一次表格;它必须显示这些值。但如果[第一次]没有数据,我会得到查询错误。我需要这个查询,因为表单数据必须与当前用户[登录]相关 以下是我的观点部分: @login_required(login_url='/login/') def profile_page(request,username): query = Profile.objects.get(owner__username = username) ##error! if request.me
@login_required(login_url='/login/')
def profile_page(request,username):
query = Profile.objects.get(owner__username = username) ##error!
if request.method == 'POST':
form = profile_form(request.POST,instance=query)
form.save()
return HttpResponseRedirect('/admin/')
else:
form = profile_form(instance=query)
return render_to_response('profile_save.html',{'form':form},context_instance = RequestContext(request))
我想我需要检查模型,如果它是空的,我应该做一些不同的事情
我被卡住了
谢谢您想使用
.exists()
queryset选项
@login_required(login_url='/login/')
def profile_page(request,username):
form = profile_form()
if Profile.objects.get(owner__username = username).exists():
query = Profile.objects.get(owner__username = username)
if request.method == 'POST':
form = profile_form(request.POST,instance=query)
form.save()
return HttpResponseRedirect('/admin/')
else:
form = profile_form(instance=query)
return render_to_response('profile_save.html',{'form':form},context_instance = RequestContext(request))
有关更多信息,请参见您只需将
get
查询包装到try。。。除了
,并将instance设置为none,如下所示
from django.core.exceptions import ObjectDoesNotExist
@login_required(login_url='/login/')
def profile_page(request,username):
try:
query = Profile.objects.get(owner__username = username)
#to be more specific you can except ProfileObjectDoesNotExist
except ObjectDoesNotExist:
query = None #Doesn't exist, set to None
if request.method == 'POST':
form = profile_form(request.POST,instance=query)
form.save()
return HttpResponseRedirect('/admin/')
else:
form = profile_form(instance=query)
return render_to_response('profile_save.html',{'form':form},
context_instance = RequestContext(request))
我想我可能会使用get_或_create来达到这个目的
Profile.objects.get_or_create(owner__username = username)
除了
ProfileDoesNotExist
它抛出未定义的全局名称之外,您应该将其排除在外。在这两种情况下;有个人资料或not@drTerminal从django.core.exceptions导入ObjectDoesNotExist顺便说一句,我的错误是“配置文件匹配查询不存在”。我将if:form=Profile\u form()和form.save()写入第一个if:form=Profile\u form()和form.save()的else部分,现在它在“owner\u id”列中抛出:null值违反not null约束您不希望在该else节中包含form.save(),因为表单中没有数据。仅当您有帖子且表单有效时才使用form.save()