Django foo_set不起作用

时间:2016-03-23 23:42:51

标签: python django django-models

我被Django(v1.9.4)搞砸了一下。我创造了两个模型,Foo和 条:

class Foo(models.Model):
    name = models.CharField(max_length=100)
class Bar(models.Model):
    foo_id = models.ForeignKey(Foo, on_delete=models.CASCADE)
    title = models.CharField(max_length=300)

迁移它(sqlite3),片刻之后意识到它应该是

  

foo而不是foo_id:

foo = models.ForeignKey(Foo, on_delete=models.CASCADE)

我这次用foo再次迁移它,但即使经过这次修正后我也无法使用

f = Foo.objects.filter(pk=1) 
f.bar_set.all()

有没有办法解决这个问题?

编辑。 错误消息: 异常类型:AttributeError 异常值:'Foo'对象没有属性'bar_set'

1 个答案:

答案 0 :(得分:3)

它不起作用,因为filter返回QuerySet(列表),而不是对象。您需要使用get而不是filter,因为get会返回一个对象。

f = Foo.objects.get(pk=1)
f.bar_set.all()