如何通过多级反向查找获取对象

How to fetch object with multiple levels of reverse lookup

在我的项目中,一共有三个模型:

class Level1(models.Model):
        name = models.CharField(max_length=250)


class Level2(models.Model):
        name = models.CharField(max_length=250)
        level1 = models.ForeignKey(Level1, on_delete=models.RESTRICT)

class Level3(models.Model):
        name = models.CharField(max_length=250)
        level2 = models.ForeignKey(Level2, on_delete=models.RESTRICT)

Level1 模型有 2 个对象 WATXLevel2有5个对象AAABBB外键为WAAAACCCDDD 其中外键是 TX.

Level3中,我想添加一个对象RRRR,其中Level2外键对象是AAA.

当我尝试通过 Level2.objects.get(name='AAA') 获取 Level2 时,它显示错误 get() returned more than one Level2 -- it returned 2!

如何解决这个问题。提前致谢。

是的,这是因为 get 方法将只允许检索一个您可以使用的对象

Level2.objects.filter(name='AAA')

get 期望只找到一个对象,否则会出错。您可以添加更多查找

Level2.objects.filter(name='AAA', level1__name='WA') or 
Level2.objects.filter(name='AAA', level1__name='TX')

Alhamdulillah,最后我通过结合 filterget.

解决了这个问题
Level2.objects.filter(level1__name='WA').get(name='AAA')