Django get 返回 ValueError:字段 'id' 需要一个数字但得到 <string>

时间:2021-01-21 03:46:08

标签: python django

这是我的models.py

class Car(models.Model):
    name = models.CharField(max_length = 100)
    country = models.CharField(max_length = 100)

    def __str__(self):
        return str(self.name)

class Model(models.Model):
    name = models.CharField(max_length = 50)
    car = models.ForeignKey(Car, on_delete = models.CASCADE)

    def __str__(self):
        return f"{self.car}-{self.name}"

这是我在 shell 中尝试的一些代码,它返回了一些意想不到的结果

从模型导入模型

print(Model.objects.all())

返回

<QuerySet [<Model: Toyota-Previa>, <Model: Toyota-Supra>, `<Model: Toyota-Camery>, <Model: Ford-Torous>, <Model: Ford-Mustang>, <Model: Ford-GT>, <Model: Mercedes-SLR>,` 
<Model: Mercedes-AMG>, <Model: Mercedes-C-Class>]>

但是

print(Model.objects.get(car = 'Toyota'))

返回

ValueError: Field 'id' expected a number but got 'Toyota'.

我不明白为什么会发生这种情况,我认为这会返回一个查询集,其中包含数据库中所有丰田制造的汽车。

1 个答案:

答案 0 :(得分:0)

因为 car 中的 Model 字段是外键,所以存储整数值作为 Car 模型的 id。您可以使用此查询获取模型记录:

print(Model.objects.get(car__name='Toyota'))