Tim*_*Tim 5 django django-models
我如何通过Django中的多个外键旅行?我已经尝试过django docs中我能想到的一切,但我显然错过了一些东西(极端新手).我有科学家,实验和理论的模型.
如果我想看一个特定的理论(我们称之为'相对论')并获得一份科学家所有电子邮件的清单(保存在普通的django用户模型中),我该怎么做?
class Experiment(models.Model)
experimenter = models.ForeignKey(Scientist)
theory = models.ForeignKey(Theory)
class Theory(models.Model)
name = models.CharField(max_length=100)
class Scientist(models.Model)
user = models.ForeignKey(User, unique=True)
institution = models.CharField(max_length=20, null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
这些是我重写的模型的简化版本,因此可能存在一些错误,但关系是正确的.
我已经尝试了select_related(),get(),filter()的各种组合,但无法弄明白.在此先感谢您的帮助!
Ign*_*ams 10
User.objects.filter(scientist__experiment__theory__name=u'relativity')
Run Code Online (Sandbox Code Playgroud)
看一下关于跨越关系的Lookup的Django文档部分.净外卖是:
要跨越关系,只需使用跨模型的相关字段的字段名称,用双下划线分隔,直到到达所需的字段.
Ignacio的答案显示了在字段名称上使用双下划线来跨越关系的示例.
Django文档的另一个相关部分是Related objects部分.Django中的关系在访问方式上是不对称的.前向/正常关系作为模型的属性被访问.访问后向关系:
Django还为关系的"其他"方创建API访问器 - 从相关模型到定义关系的模型的链接.例如,Blog对象b可以通过entry_set属性访问所有相关Entry对象的列表:b.entry_set.all().
| 归档时间: |
|
| 查看次数: |
7225 次 |
| 最近记录: |