python - Django Query.get 引发对象匹配查询不存在 Try & except 错误
问题描述
模型.py
class Inventory(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE,blank=True)
product = models.ManyToManyField(Product, blank=True)
class Product(models.Model):
name = models.CharField(max_length=50)
description = models.TextField(default='Hidden')
image = models.ImageField(upload_to='images/', blank=True, null=True)
interest = models.IntegerField(default=0, blank=True)
price = models.IntegerField(default=0, blank=True)
capital = models.IntegerField(default=1, blank=True)
years = models.IntegerField(default=0, blank=True)
created_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
视图.py
def inventory(request):
b = request.user.id # user_id=12
inv1 = Inventory.objects.all()
try:
userdb = inv1.get(user_id__exact=b)
inv1.get(user_id__exact=b)
context = {}
return render(request, 'redcube/inventory.html', context)
except:
userdb = inv1.get(user_id__exact=b)
products = userdb.product.all()
bal = 0
for p in products:
print(p.price, '=p.price')
bal = bal + p.price
context = {'inv1': inv1, 'userdb': userdb, 'products': products, 'bal': bal}
return render(request, 'redcube/inventory.html', context)
context = {'inv1':inv1}
return render(request, 'redcube/inventory.html', context)
库存.html
{% extends 'basic.html' %}
{% load static %}
{% block content %}
<link href="{% static 'bootstrap.min.css' %}" rel="stylesheet">
<style>
.center {
margin: auto;
width: 50%;
padding: 10px;
}
</style>
<div class = "w-100 p-auto" style = "width:500px; margin: 0 auto;">
<div class="center">
<div class="container">
<div class="card" style="width: 50rem;">
<div class="center">
<div class = "text-center user-block">
<h1 class="center">Inventory</h1>
{% if products %}
<h2>Balance <span class="text-info">{{bal}}</span> Tcoins </h2>
{% else %}
<h2 class="text-danger">No items</h2>
{% endif %}
</div>
</div>
</div>
</div>
</div>
</div>
{% csrf_token %}
{% if user.is_authenticated %}
{% for p in products %}
<div class = "w-100 p-auto" style = "width:500px; margin: 0 auto;">
<div class="center">
<div class="container">
<div class="card" style="width: 50rem;">
<div class="center">
<div class = "text-center user-block">
<h3 class = "text-info left-things">{{p.name}}</h3>
<p><h5> {{p.price}} Tcoin </h5> Description {{p.description}}</p>
<img class="w-10 p-auto" src = "{{p.image.url}}" alt = "User Image" style = "width :400px; height:auto; margin: 0 auto;">
</div>
</div>
</div>
</div>
</div>
</div>
{% endfor %}
{% endif %}
<div class="container">
{% endblock %}
当 Inventory 对象没有关于 b(user_id=12) 的 db 时(用户尚未制作产品,因此 Inventory DB 没有 used_id=12)
inventory.html 页面向我显示“DoesNotExist 错误”
userdb = inv1.get(user_id__exact=b)
我是 django 的新手,我知道我可以在 html 页面上设置 if 选项来避免,但我想了解 views.py 侧选项以避免 DoesNotExits 错误解决方案。
我试图找到答案,但几个小时都找不到
我该如何解决这个问题?:{
解决方案
推荐阅读
- r - R ggplot2:如何跨子组箱线图绘制 2 组的平均线?
- r - 如何修改函数以提取 R 中的某些回归系数
- azure-devops - Azure DevOps 扩展的条件上下文菜单?
- php - 来自 github 的 PHPmailer 是否仅用于您的本地主机?
- ios - 从 Objective-C 调用 Swift 扩展函数的语法
- mongodb - MongoDB 副本集 - 次要反复关闭
- mysql - .NET 将数据从 SQL Server 插入 MySQL 而不循环数据
- reactjs - React/Antd:基于 JSON 响应的动态表单字段
- c++ - 通过谷歌测试测试异步调用
- java - Log4j 在不应执行时在控制台上输出