假设我们有4个模型,分别命名为Alpha
、Beta
、Gamma
和Delta
,前两个模型如下所示:
class Alpha(models.Model):
gamma = models.ForeignKey(Gamma, on_delete=models.RESTRICT)
delta = models.ForeignKey(Delta, on_delete=models.RESTRICT)
text = models.CharField(max_length=1024)
class Meta:
constraints = [
models.UniqueConstraint(fields=['gamma_id', 'delta_id'])
]
class Beta(models.Model):
gamma = models.ForeignKey(Gamma, on_delete=models.RESTRICT)
delta = models.ForeignKey(Delta, on_delete=models.RESTRICT)
value = models.IntegerField()
正如您所看到的,这两个外键可以用来将Beta中任意数量的行与Alpha中的一行关联起来,Beta和Alpha之间基本上是一对多的关系。
由于各种原因,将Beta中的两个外键替换为Alpha的外键是不可行的。
是否有一种方法可以在Alpha上定义一个关系,返回Beta中具有相同gamma_id
和delta_id
的所有行
1条答案
按热度按时间66bbxpm51#
对于名为
some_alpha
的Alpha
模型,您可以使用以下命令检索Beta
项目:因此,我们将检查跨越
gamma
和delta
的关系是否引用同一个alpha
对象。