我正在使用该User模型 django.contrib.auth.models.我有另一个模型Post,User通过外键引用.
问题是当我尝试访问登录用户的帖子时
request.user.post_set.order_by('-timestamp')
Run Code Online (Sandbox Code Playgroud)
我收到错误,User对象没有属性post_set.那么如何使用带外键的默认身份验证模型?
Ste*_*ith 17
您是否在settings.py安装的应用程序中包含了包含Post模型的应用程序?
例如
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'testapp'
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
)
Run Code Online (Sandbox Code Playgroud)
并运行manage.py syncdb?
python manage.py syncdb
Run Code Online (Sandbox Code Playgroud)
即,Post模型的数据库表肯定存在吗?
我做了一个快速测试,发现没有问题:
from django.db import models
from django.contrib.auth.models import User
class PostModel(models.Model):
user = models.ForeignKey(User)
(test) C:\Users\Steven\django_projects\test\testproj>python manage.py shell
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.contrib.auth.models import User
>>> test = User.objects.get(username='test')
>>> test.postmodel_set.all()
[]
Run Code Online (Sandbox Code Playgroud)
Post.objects.filter(user=request.user).order_by('-timestamp')
Run Code Online (Sandbox Code Playgroud)