django - 跨越多个关系的 Django 数据库查询
问题描述
鉴于以下模型:
class Assets(models.Model):
assettag = models.CharField()
...
pass
class Employees(models.Model):
loginname = models.CharField()
pass
class Item(models.Model):
descr = models.CharField()
asset = models.OneToOneField('Assets')
...
class Assignments(models.Model):
employeeid = models.ForeignKey('Employees')
assetid = models.ForeignKey('Assets')
...
我可以使用 Q 对象进行查询,返回Item
包含某个descr
或某个的所有模型。assettag
Item.objects.filter(Q(asset__assettag__icontains = query) |
Q(descr__icontains = query) #|
).order_by('asset__assettag')
是否有可能以employeeid__loginname
某种方式包括在内?我想不出办法。
我想检索表Assets
中引用Item
且属于某个Employee
.
解决方案
首先在 Assignments 模型中添加一个“related_name”。
assetid = models.ForeignKey(Assets, related_name='asset_related_name')
那么你可以使用这个asset__asset_related_name__employeeid__loginname
推荐阅读
- pandas - 分析 Dask 数据帧的数据流
- azure-devops - 如何设置 Azure Dev Ops 以构建 Dev Express XAF-XPO 项目?
- javascript - 覆盖 Console.log 以支持 Console.re.log 以调试 iOS Chrome
- c# - 在 MessageBox.Show 上显示红色标记
- ios - 像 gif 中给出的动画一样旋转视图
- javascript - 如何在一组日期数组中找到给定的日期?
- pep8-assembly - 汇编语言中的 CPA。CPA 和累加器如何工作?
- docker - docker:来自守护程序的错误响应:地址已在使用中
- c# - CopyToDataTable 清除 DataTable 的原始元数据
- sql - 向 SQL Server 中的存储过程添加参数