0

嗨,我的英语不太好,但我会尽力解释自己。我正在使用 python 和 Django 创建一个 Web 项目。我有这 4 个模型(这是我可以对表格和字段进行的最佳翻译):

class Humans (models.Model): 
    name = models.CharField(max_length=15)
    surname = models.CharField(max_length=15)
    doc_num = models.CharField(max_length=11)
    ...

class Records (models.Model): 
    closing_state = models.CharField(max_length=2)
    ...
    humans = models.ManyToManyField(Humans, through='Reco_Huma')

class Reco_Huma (models.Model): 
    id_record = models.ForeignKey(Records)
    id_human = models.ForeignKey(Humans)
    categorys = models.CharField(max_length=2)
    reserv_identity = models.CharField(max_length=2)
    repre_entity = models.CharField(max_length=2)


class Observations (models.Model): 
    id_record = models.ForeignKey(Records)
    text = models.CharField(max_length=80)
    category = models.CharField(max_length=2, choices=CAT)

现在给定一个来自 Humans 的 doc_num,一个来自 Observations 的文本,我想获得所有记录的 QuerySet。

为了澄清我首先这样做:

q1 = Reco_Huma.objects.filter(id_human.doc_num=x)
q2 = Observations.objects.filter(text=y)

两个查询集都给了我一个 id_record 列表,然后我想纵容该列表并使用该 id_record 过滤 Records 表

我希望你能理解我

提前致谢

4

1 回答 1

1

重新表述您的查询,您需要与某个 Human 相关联并且具有某个 Observation 的所有记录。所以应该是:

result = Records.objects.filter(observations__text=y, humans__doc_num=x)

作为一般规则,如果您想以某种类型的对象结束,在查询中从那里开始会有所帮助。

于 2012-05-04T13:11:23.513 回答