django的entry_set定义

1 投票
2 回答
4283 浏览
提问于 2025-04-16 15:49

我不太明白《实用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 是源模型的名字,且全是小写字母。

撰写回答