0

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

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 个对象WATX. Level2有5个对象AAABBB外键在哪里WA;和AAA,CCCDDD键在哪里TX

Level3中,我想在Level2外键对象RRRR所在的位置添加一个对象。AAA

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

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

4

3 回答 3

0

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

Level2.objects.filter(name='AAA')
于 2021-06-18T15:22:40.137 回答
0

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

Level2.objects.filter(name='AAA', level1__name='WA') or 
Level2.objects.filter(name='AAA', level1__name='TX')
于 2021-06-18T15:38:45.787 回答
0

Alhamdulillah,最后我通过结合filterget解决了这个问题。

Level2.objects.filter(level1__name='WA').get(name='AAA')
于 2021-06-18T18:08:47.230 回答