首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含一个联接的django子查询

问包含一个联接的django子查询
EN

Stack Overflow用户
提问于 2015-11-03 00:40:11
回答 1查看 498关注 0票数 0

我得到了django 1.8.5和Python3.4.3,并试图创建一个约束我的主数据集的子查询--但是子查询本身(我认为)需要一个连接。或者有更好的方法来做。

下面是一组经过修剪的模型:

代码语言:javascript
复制
class Lot(models.Model):
    lot_id = models.CharField(max_length=200, unique=True)

class Lot_Country(models.Model):
    lot = models.ForeignKey(Lot)
    country = CountryField()

class Discrete(models.Model):
    discrete_id = models.CharField(max_length=200, unique=True)
    master_id = models.ForeignKey(Inventory_Master)
    location = models.ForeignKey(Location)
    lot = models.ForeignKey(Lot)

我正在过滤离散(离散供应)的各种属性,我想在Lot_Country上“向上”通过抽签,这意味着“我只想从离散行中获得行,如果与该行相关的行在Lot_Country中为我相应的国家(比如美国)中的条目。”

我试过这样的方法:

代码语言:javascript
复制
oklots=list(Lot_Country.objects.filter(country='US'))

但是,首先,这给了我str,我并不真正想要它(并将它改为lot_id,但这是一种黑客行为)。

通过抽签将离散约束到Lot_Country的最佳方法是什么?在SQL中,我只是加入子查询(甚至在主查询中)--也许这就是我所需要的?我想我不知道如何加入父母,然后进入父母的另一个孩子.)

提前谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-11-03 02:39:38

我不知道你说的“它给我的回报”是什么意思。Lot_Country.objects.filter(country='US')将返回一个查询集。当然,如果您在控制台中打印它,您将看到一个字符串。

我也认为你的模型需要重构。按照当前定义它的方式,您可以将多个Lot_Country与one Lot相关联,并且一个国家只能与one lot相关联。

如果我正确地理解了您的一般模型,这不是您想要的--您希望将多个Lot与一个Lot_Country关联起来。要做到这一点,您需要反转您的外键关系(即,将其放入Lot中)。

然后,为了获取某个国家的所有Discrete批次,您可以这样做:

代码语言:javascript
复制
discretes_in_us = Discrete.objects.filter(lot__lot_country__country='US')

这将为您提供所有Discretes的查询集,其Lot位于美国。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33489593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档