2013-07-30 34 views
0

我试图在Django中创建一个查询集,但没有运气。 由于某种原因我的模型似乎是错误的。 我会简化。失踪?类模型django queryset

我有这个类在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) 

人吗?

+0

为什么你需要在同一个查询集?难道你不能只使用RcAnalystag模型的查询集并通过外键关系访问RcAnalysistag?什么是特定用例?在大多数情况下这应该是不必要的。你想达到什么目的?你想用查询集做什么? – 2013-07-30 12:55:25

+0

我只需要加入RcAnalysis与RcAnalysistag。 其中RcAnalysis ID等于RcAnalysisTag analysisid。 Django不允许我使用id字段,尝试与两者进行连接。 你是怎么加入这个模型的?我curr使用RcAnalysis.objects ... – Storm

+0

想通了... 我可以使用rcanalysistag作为django tiped我。 没有看到这个2天-.- 谢谢。 – Storm

回答

0

将外键定义添加related_name =“tags”。那么你可以这样做:

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