1

私は

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 definedp = Posts.objects.filter(created_by=testuser)

created_byコンテンツが models.ForeignKey(User) であるというフィールドを正しくフィルター処理するにはどうすればよいですか。とにかく解決策はありますか、それとも作成CharField者 (ポスター) をコンテンツとして追加作成する必要がありますか?

4

1 に答える 1

1

p = Posts.objects.filter(created_by__username=poster, active=True)

poster は単なる名前 (str) です。リレーションシップにまたがり、user.username を使用してクエリを実行できます。__

または、最初にポスターでユーザーオブジェクトを取得できます

user = Users.objects.get(username=poster)
p = Posts.objects.filter(created_by=user, active=True)

ユーザーモデルのドキュメントはサイトにあります: https://docs.djangoproject.com/en/dev/topics/auth/#users

于 2012-12-17T17:05:52.563 に答える