我一直试图为我的模板获取Django对象,但我无法通过id获取对象。这似乎是因为我在我的模型中使用了外部表列,请参阅:
class Item(models.Model):
type_id = models.IntegerField(db_column='typeID', primary_key=True)
name = models.TextField(db_column='typeName', blank=True)
description = models.TextField(blank=True)
base_price = models.IntegerField(db_column='basePrice', blank=True)
class Meta:
db_table = 'invTypes'
因此,当我尝试找到此对象时,我无法通过ID过滤它,但可以通过名称或任何其他字段来访问它
>>> Item.objects.all()[0].id
'0'
>>> Item.objects.filter(name='#System')[0].id
'0'
>>> Item.objects.filter(id='0')
[]
>>> Item.objects.filter(id=0)
[]
思考? 感谢
答案 0 :(得分:3)
您的主键是' type_id',而不是' id'。你应该看起来像:
Item.objects.all()[0].type_id
答案 1 :(得分:0)
我搞砸了type_id \ id,它仍然保持不变。 但是,我找到了解决方案而且它不是django。 似乎在将数据导入sqlite DB之后,它没有将整数设置为我的主键列,因此查询无法找到TEXT主键。
我刚刚将列类型更改为INTEGER,但它确实有效。