django关系语法比较

时间:2013-12-12 14:35:45

标签: python django syntax

给出以下模型:

class Foo(models.Model):
    bar = models.ForeignKey(Bar)

class Bar(models.Model):
    date = models.DateTimeField(auto_add_now=True)

这些不同吗?:

Foo.bar.filter(date=...)
Foo.objects.filter(bar__date=...)

如果是,怎么样?如果没有,为什么它们都存在?

1 个答案:

答案 0 :(得分:1)

正如@yuvi提到的Foo.bar.filter(date=...)无效。也许第一个查询就像:

Foo.bar.get_query_set().filter(date=...)

Foo.bar.get_query_set()会为bar生成一个与Bar.objects.all()相同的查询集。因此这两者完全不同。

Foo.bar.filter不存在,因为Foo.bar存在以获取有关该字段的说明。