跨多个关系的Django数据库查询

时间:2019-12-03 11:20:12

标签: django python-3.x django-models django-views

给出以下模型:

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的{​​{1}}。

1 个答案:

答案 0 :(得分:0)

首先在“工作分配”模型中添加一个“ related_name”。

assetid = models.ForeignKey(Assets, related_name='asset_related_name')

然后您可以使用此asset__asset_related_name__employeeid__loginname