django - Django,检测object.filter是否返回0个对象
问题描述
我有这样的表结构
class Item(models.Model):
id = models.AutoField(primary_key=True)
class Car(models.Model):
vin_number = models.CharField(max_length=250, null=True, blank=True)
item = models.OneToOneField(Item, on_delete=models.CASCADE)
name = models.CharField(max_length=1000, null=True)
year = models.IntegerField(null=True)
class Yacht(models.Model):
name = models.CharField(max_length=1000, default='')
boat_type = models.CharField(max_length=1000, default='', null=True)
item = models.OneToOneField(Item, on_delete=models.CASCADE)
description = models.TextField(default='')
year = models.IntegerField(null=False, default=0)
所以,Car 和 Yacht 都与 Item 表有关系
如果我在请求中只有项目 ID,那么编写此类查询的正确方法是什么
data = request.POST
item = Car.objects.filter(item_id=data['item_id']).first()
if not item:
item = Yacht.objects.filter(item_id=data['item_id']).first()
有没有办法不使用 if/else 语句?
解决方案
你需要使用exists()
.
Car.objects.filter(item_id=data['item_id']).exists()
Yacht.objects.filter(item_id=data['item_id']).exists()
它返回你True
或False
。官方文档的链接。
推荐阅读
- javascript - 禁用使用 Chrome PDF 查看器显示的嵌入式 PDF 中的 javascript
- c# - WPF 将 xaml UI 属性绑定到动态实例控件属性
- ruby-on-rails - 可以让模型包含同名的列吗?
- macos - MacOS 安装 LLVM
- python - 为什么我们在烧瓶中注册蓝图?
- php - 当它们不属于表单时如何处理多个提交
- java - 按下按钮后如何触发覆盖方法?
- string - 将字符串转换为整数
- amazon-web-services - AWS Athena:删除日期范围之间的分区
- angular - includedByState & 包含过滤器不适用于 ngClass