django - Django:从与我的 Vehicle 模型具有 ForeignKey 关系的 2 个模型中过滤数据的查询
问题描述
我正在尝试编写一个返回Vehicle
对象的查询。查询应按特定Garage
对象(即garage__name = )和特定Category
对象(即category__name = )进行过滤,并且Vehicle
对象的可用字段为True(available = True)。这些是模型:
class Garage(models.Model):
name = models.CharField (max_length = 30, blank=False)
zip = models.IntegerField (blank=False)
area = models.CharField (max_length = 30, blank=False)
pic = models.ImageField (upload_to ='static/images/garages')
class Vehicle(models.Model):
car_no = models.CharField (max_length = 20, blank=False)
photo = models.ImageField (upload_to ='static/images/vehicles')
car_model = models.ForeignKey (Car_model, on_delete=models.CASCADE)
garage = models.ForeignKey (Garage, on_delete=models.CASCADE)
category = models.ForeignKey (Category, on_delete=models.CASCADE)
available = models.BooleanField(default=True)
class Category(models.Model):
name = models.CharField (max_length = 15, blank=False)
我在相应的视图函数中尝试的是这样的:
def carSelectView(request, type, grg):
cars=Vehicle.objects.filter(category__name=type, garage__name=grg, available=True)
return render(request, 'carphotoselectpage.html', {'ca':cars})
但它返回一个空页面。在这种方法之前,我试图只获得特定类别的汽车并且它有效:
def carSelectView(request, type):
cars = Vehicle.objects.filter(category__name = type).filter(available=True)
我不明白问题出在哪里。我想通过 1. 选择特定Garage
的 2. 选择与名称Garage
匹配的车辆来显示车辆。Category
3.可用字段为True。
模型没有在查询中Vehicle
获取模型吗?Garage
解决方案
您的代码看起来不错,因此这可能是在type
andgrg
变量中传递的内容有问题,而不是您的查询有问题。
要调试,请尝试以下操作:
- 使用
print()
命令将存储在type
和grg
变量中的值输出到终端。检查以确保它们符合预期。 - 用户
$ python manage.py shell
启动您的终端,然后手动运行您的查询以确保它返回预期的输出。from .models import Vehicle
, 那么Vehicle.objects.filter(category__name='REAL CATEGORY', garage__name='REAL GARAGE', available=True)
. 确保您得到结果。如果您不这样做,请尝试逐一删除标准,直到您可以找出问题的根源。 - 确保您的模板
Car
在提供实例时正确显示实例。尝试将Car
您知道存在的 a 的实例(例如,Car.objects.all()
)传递给它,并确保它显示正确的输出。
推荐阅读
- spring-boot - 带有 ConfigurationProperties 的 Spring Boot CORS 配置
- oracle - 如何在 PL/SQL 中将 NVL 用于日期列?
- javascript - 在 angularJS 中的图像 HTML、CSS 上重叠文本区域或文本
- kubernetes - 如何在气隙系统上安装 Helm 3 Chart
- algorithm - 最大平衡二叉树
- hibernate - 信息:HHH000318:在类路径中找不到任何 META-INF/persistence.xml 文件,尽管文件存在
- git - 如何将 git 重置回我推送的内容
- node.js - GitLab CI 错误作业失败(系统故障)
- javascript - 如何验证或检查提示值是否在对象中
- pytorch - Pytorch autograd:使参数的梯度成为另一个参数的函数