这是我的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'.
我不明白为什么会发生这种情况,我认为这会返回一个查询集,其中包含数据库中所有丰田制造的汽车。
答案 0 :(得分:0)
因为 car
中的 Model
字段是外键,所以存储整数值作为 Car
模型的 id。您可以使用此查询获取模型记录:
print(Model.objects.get(car__name='Toyota'))