这是this分的跟进问题.

我有app1/models.py个:

class A(models.Model):
    id = models.IntegerField(primary_key=True)
    text = models.CharField(max_length=20)

class B(models.Model):
    fid = models.ForeignKey(A, models.CASCADE)
    text = models.CharField(max_length=20)

class C(models.Model):
    fid = models.ForeignKey(A, models.CASCADE)
    text = models.CharField(max_length=20)

app2/models.py:

from app1.models import A

class D(models.Model):
    fid = models.ForeignKey(A, models.CASCADE)
    text = models.CharField(max_length=20)

我希望得到A.text-B.text-C.text-D.text,A.id == B.fid == C.fid == D.fid == 1在哪里.从提到的问题中,我能够使用以下命令检索前3列:

B.objects.filter(fid=1).values('text', 'fid__text', 'fid__c__text') # B.text, A.text, C.text

然而,使用这个查询我得不到D.text.我知道我可以对D进行过滤,然后手动计算,但我期待着一种更具Djangoic风格的方式.

(在多匹配的情况下,将行相乘,因此如果B中有2行与给定的fid匹配,CD中有3、4行,则总共返回24行.)


我们AreStarsDust和nigel222的答案都很棒,值得一读.

推荐答案

try 从A型号进行查询

A.objects.filter(id=1).values('text', 'b__text', 'c__text', 'd__text')

A.objects.filter(id=1).values('text', 'b_set__text', 'c_set__text', 'd_set__text')

M或e details about _set can be found in the RelatedManager docs

Django相关问答推荐

未显示SWAGER上的一些示例架构

Django Form初始值不在呈现上起作用

如何在Django中显示文件大小

如何创建复杂的查询?| ChartJS 和 Django

Django中的InvalidOperation错误[]

如何将数据(具体归档)从views.py 传递到models.py

Django rest框架:自定义对象权限不起作用

Django InlineModelAdmin:部分显示内联模型并链接到完整模型

在 Django 中提供大文件(高负载)

URL命名空间的一个真实例子

超过 1 个外键

获取 Django 表单中的错误列表

Django REST Framework 和 FileField 绝对 url

Django 和 VirtualEnv 开发/部署最佳实践

将 Django Rest Framework 与序列化程序一起使用时出现 AttributeError

如何在字段集中显示 Django 管理内联模型?

如何在 django 中仅获取表的特定列?

'function' 对象没有属性 'as_view'

django.db.utils.OperationalError 无法连接到服务器

Django Debug Toolbar:了解时间面板( time panel)