首页 > 解决方案 > Django我如何进行内部连接

问题描述

我的模型.py

class Forms_in_Document(models.Model):

    document_submit = models.ForeignKey(Document_submit, on_delete=models.CASCADE)



class Document_data(models.Model):

    forms_in_document = models.ForeignKey(Forms_in_Document, on_delete=models.CASCADE)
    document_structure = models.ForeignKey(DocumentStructure , on_delete=models.CASCADE)
    date_created= models.DateTimeField(default=datetime.now(),null=False)
    string = models.CharField(null=True, max_length=100)
    integer = models.IntegerField(null=True)
    date_time = models.DateTimeField(null=True)



class Application(models.Model):

    user = models.ForeignKey(User,on_delete=models.CASCADE, null=False)
    date_created = models.DateTimeField(default=datetime.now(),null=False)
    forms_in_document = models.ForeignKey(Forms_in_Document, on_delete=models.CASCADE, null=True)
    closed = models.BooleanField(default=False, null=False)
    new = models.BooleanField(null=False)
    media = models.BooleanField(default=True)
    Path_info = models.ForeignKey(Path_info, on_delete=models.SET_NULL,null=True)

我试图在 Django views.py 中执行的原始 SQL 查询是

Select * from Application app
inner join Document_data dd 
on dd.forms_in_document=app.forms_in_document

如何在我的视图中使用 Django 查询集来做同样的事情?

提前致谢

标签: djangodjango-queryset

解决方案


给定一个Application实例,您可以访问Document_data使用以下内容的列表:

application = Application.objects.get(...)
documents = applications.forms_in_document.document_data_set.all()

或者

application = Application.objects.get(...)
documents = Document_data.objects.filter(forms_in_document__application=application)

推荐阅读