ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

python-如何检查数据库中是否存在对象,然后将其插入到Django的表单中

2019-11-19 00:58:59  阅读:256  来源: 互联网

标签:django-forms python django django-models


我有以下模型:models.py

name = models.CharField(max_length=100, blank=False, null=False)
serial_number = models.CharField(max_length=100, blank=False, null=False)
make = models.CharField(max_length=100, blank=False, null=False)
model = models.CharField(max_length=100, blank=False, null=False)
color= models.CharField(max_length=100, blank=False, null=False)
date_acquired = models.DateTimeField(auto_created=True)
acquired_from = models.CharField(max_length=100, choices=ACQUIRED_FROM)
holder = models.ForeignKey(CertificateHolder, blank=False,)
dealer_license = models.ForeignKey(Dealer, blank=False)

我已经使用ModelForm创建了一个表单,如下所示:

class IssueItemForm(ModelForm):

class Meta:
    model = IssuedItem
    fields = '__all__'

经销商需要在签发物品之前检查是否存在证书持有人,我的代码如下所示;

views.py:

def search(request):
try:
    query = request.GET.get('q')
    results = 0

except ValueError:
    query = None
    results = None
if query:
    results = CertificateHolder.objects.get(cert_no=query)

context = RequestContext(request)

return render_to_response('core/results.html', {"results": results, }, context_instance=context)

然后我有模板search.html和results.html

<form method="get" action="/search/">
<input type="text" name="q" id="id_q" value="{{ query }}"/>
<input type="submit" value="Search" />
</form>

在results.html我有

{% if results %}
<h3>The Certificate number is valid</h3>
<h3>To issues an item click the button below</h3>
<a href="{% url 'issueitem' %}">Issue A New Item</a>

{% else %}
<h3 class='error'>Please enter a valid Certificate</h3>
<form method="get" action="/search/">
  <input type="text" name="q" id="id_q" value="{{ query }}"/>
  <input type="submit" value="Search" />
</form>

{% endif %}

如果数据库中有证书,则该代码有效,但是如果不匹配,则会引发如下错误:

error image

但是,我希望该错误成为代码的一部分,以告诉经销商该号码不存在,他应该尝试另一个.另外,当证书存在时,我希望将其插入到holder字段中,而不是像现在那样从数据库中获取证书.我要去哪里错了?

解决方法:

您还必须捕获DidNotExist错误.将if查询改为try try块:

try:
    result = CertificateHolder.objects.get(cert_no=query)
except DoesNotExist:
    pass

标签:django-forms,python,django,django-models
来源: https://codeday.me/bug/20191119/2032247.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有