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()