[英]Django - Checking if objects exists and raising error if it does
我需要检查表中是否存在对象。 如果对象不存在,我想保存它,如果对象不存在,我想刷新页面并告诉用户标识符(引用号)已经存在。 我有以下示例代码:
def some_method(request):
if request.method == 'POST':
form = SomeForm(request.POST)
if form.is_valid:
quote = request.POST.get('quote')
if SomeModel.objects.get(quote_number = quote).exists():
refresh with error #not sure how to do
else:
save object #I can do this part
我遇到的问题是,当我检查对象是否存在(并且确实存在)时,代码将引发错误,指出该对象在到达if
之前不存在。 这意味着网页上充满了编码信息,而不是带有针对用户的消息刷新。
我希望能够有一些弹出消息或一些东西供用户输入新的报价编号,而不是显示开发人员错误页面。
我要用正确的方法吗?
我会做这样的事情:
from django.http import HttpResponseRedirect
from django.contrib import messages
...
try:
some_object = SomeModel.objects.get(quote_number=quote)
message.warning(request, 'some message')
return HttpResponseRedirect('some-url')
except SomeModel.DoesNotExist:
some_object = SomeModel.objects.create(quote_number=quote)
...
在模板中,您可以显示消息,如下所示:
{% if messages %}
{% for message in messages %}
{{message}}
{% endfor %}
{% endif %}
您可以使用get_or_create
。 它返回一个具有检索到(或创建的)对象和布尔值的元组。 如果布尔值是True
当它是一个新的对象,如果它是False
当对象已存在,则可以抛出所需的错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.