django的entry_set定义
我不太明白《实用Django项目》第87页上的以下代码:
from django.views.generic.list_detail import object_list
def category_detail(request, slug):
category = get_object_or_404(Category, slug=slug)
return object_list(request, queryset=category.entry_set.all(),
extra_context={ 'category': category }))
那个entry_set
是从哪里来的?它是在哪里定义的?谢谢。
2 个回答
0
我手边没有我的资料,但通常来说,_set属性是外键的结果。模型应该看起来像这样:
class Entry(models.Model):
text = models.TextField()
...
class Category(models.Model):
entry = models.ForeignKey(entry)
...
所以如果你对类别进行查询,每个类别都会有一个entry_set,这个entry_set里面会包含通过entry模型链接的所有数据。
4
这是由 Entry
模型创建的。
如果一个模型有一个
ForeignKey
(外键),那么外键对应的模型的实例就可以使用一个叫Manager
的东西,这个东西可以返回所有第一个模型的实例。默认情况下,这个Manager
的名字是FOO_set
,其中FOO
是源模型的名字,且全是小写字母。