【发布时间】:2014-01-23 02:43:40
【问题描述】:
我正在阅读一本名为“Packt Publishing, Learning Website Development with Django”的书,我正在做一个关于如何创建书签网站的教程,用户可以在其中阅读文章并将它们加入书签/保存文章的 URL。这是models.py
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Link(models.Model):
url = models.URLField(unique=True)
class Bookmark(models.Model):
title = models.CharField(max_length=200)
user = models.ForeignKey(User)
link = models.ForeignKey(Link)
现在,这是我的 user_page 视图(用户名作为参数传递给视图)
def user_page(request, username):
try:
user = User.objects.get(uesrname=username)
except:
raise Http404('Requested user not found.')
bookmarks = user.bookmark_set.all()
variables = {
'username': username,
'bookmarks': bookmarks
}
return render(request, 'user_page.html', variables)
我对这条线感到困惑
bookmarks = user.bookmark_set.all()
我知道“用户”是一个用户对象,但我们使用的是 Django 提供的通用用户模型,它只有用户名、密码和电子邮件,对吧?那么bookmark_set 是从哪里来的呢?因为如果它试图访问书签类中的所有书签,那么书签集中的“b”至少不应该是大写的吗? _set 是做什么的?在书中,它通过说来解释这一行
"要获取特定用户对象的书签列表,我们可以 方便地使用用户对象中可用的 bookmark_set 属性"
我尝试用谷歌搜索用户对象的所有可用属性,但找不到任何东西。是否有一个网站列出了用户对象的所有可用属性?
【问题讨论】:
标签: python django django-models django-views django-users