我有一个
class Posts(models.Model):
created_by = models.ForeignKey(User)
post = models.CharField(max_length=150)
active = models.NullBooleanField()
def __unicode__(self):
return self.post
现在我想按class Posts
过滤我的created_by=testuser
。为此我做
p = Posts.objects.filter(created_by=poster, active=True)
var(poster)
来自请求的url(r'^(?P<poster>\w+)/$', views.Posts),
如果我通过访问my-domain.tld / testuser来执行它,我会得到ValueError: invalid literal for int() with base 10: 'testuser'
如果我尝试在manage.py shell
中过滤,如果我尝试使用NameError: name 'testuser' is not defined
命令进行过滤,则会收到错误p = Posts.objects.filter(created_by=testuser)
。
如何正确过滤我的字段created_by
内容为models.ForeignKey(用户)。无论如何还是有解决方案,还是应该创建额外的CharField
创作者(海报)作为内容?
答案 0 :(得分:1)
p = Posts.objects.filter(created_by__username=poster, active=True)
海报只是一个名称(str),您可以使用__
或者您可以先通过海报
获取用户对象user = Users.objects.get(username=poster)
p = Posts.objects.filter(created_by=user, active=True)
用户模型文档可在网站上找到:https://docs.djangoproject.com/en/dev/topics/auth/#users