【问题标题】:missing? class model django queryset失踪?类模型 Django 查询集
【发布时间】:2013-07-30 15:11:06
【问题描述】:

我正在尝试在 django 中创建一个查询集,但我没有运气。 出于某种原因,我的模型似乎是错误的。 我会简化的。

我在 models.py 中有这个类:

class RcAnalysis(models.Model):
    id = models.AutoField(db_column='Id', primary_key = True) # Field name made lowercase.
    /*
    some other 10 columns (srry can't post here)
    */
    class Meta:
        db_table = 'rc_Analysis'

class RcAnalysistag(models.Model):
    analysisid = models.ForeignKey(RcAnalysis, db_column='AnalysisId') # Field name made lowercase.
    tagid = models.ForeignKey(LabTags, db_column='TagId') # Field name made lowercase.
    class Meta:
        db_table = 'rc_AnalysisTag'

我需要加入带有 analysistag 模型的 RcAnalysis。 但是我没有可以正确调用 RcAnalysisTag 的字段。

就像这样的 SQL 查询:

...
from rc_Analysis A
...
inner join rc_AnalysisTag At on ( A.Id = At.AnalysisId )
inner join lab_Tags T on ( T.Id = At.TagId )

有人吗?

【问题讨论】:

  • 为什么你需要在同一个查询集中两者?你不能只使用 RcAnalystag 模型的查询集并通过外键关系访问 RcAnalysistag 吗?具体用例是什么?在大多数情况下,这应该是不必要的。你想达到什么目的?你想用查询集做什么?
  • 我只需要使用 RcAnalysistag 加入 RcAnalysis。其中 RcAnalysis ID 等于 RcAnalysisTag analysisid。 Django 不允许我使用 id 字段来尝试加入两者。你是如何加入这个模型的?我正在使用 RcAnalysis.objects ...
  • 想通了...我可以像 django 提示的那样使用 rcanalysistag。 2天没看到这个-.-谢谢。

标签: python sql django model


【解决方案1】:

在外键定义中添加一个related_name="tags"。然后你可以这样做:

analysis_object = RCAnalysis.object.get(id=1)
related_tags = analysis_object.tags.all()

【讨论】:

    猜你喜欢
    • 2012-12-15
    • 2011-02-02
    • 2010-09-26
    • 1970-01-01
    • 2020-11-14
    • 2017-11-22
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多