Django无法通过主键上的过滤器找到对象

时间:2014-08-05 19:44:58

标签: django

我一直试图为我的模板获取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)
[]

思考? 感谢

2 个答案:

答案 0 :(得分:3)

您的主键是' type_id',而不是' id'。你应该看起来像:

Item.objects.all()[0].type_id

答案 1 :(得分:0)

我搞砸了type_id \ id,它仍然保持不变。 但是,我找到了解决方案而且它不是django。 似乎在将数据导入sqlite DB之后,它没有将整数设置为我的主键列,因此查询无法找到TEXT主键。

我刚刚将列类型更改为INTEGER,但它确实有效。