3

だから私は3つのモデルを持っています

class Post(....

class Project(....

# have a many to many relationship
class ProjectPost(....
    post = ..... # foreignkey
    project = .... # foreignkey

選択したいデータ セットは、Project オブジェクトが指定された Post オブジェクトのリストです。

これは私が試したものです:

posts_list = ProjectPost.objects.filter(project=project_object).select_related("post")

ただし、これは Post オブジェクトのリストではなく、ProjectPost オブジェクトのリストを返します。これを行う正しい方法は何ですか?

4

2 に答える 2

4

ManyToManyField() を使用することもできます

https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/

次のようにする必要があります。

class Post(models.Model):
    pass


class Project(models.Model):
    posts = models.ManyToManyField(Post)

そして、プロジェクトの投稿にアクセスしたい場合は、次のことができます

project_obj.posts.all()

すべてのQuerysetメソッドを使用できます

投稿のプロジェクトにアクセスしたい場合は、次のことができます

post_obj.project_set.all()

前と同じように、すべての Queryset メソッドを使用できます。

何らかの理由でそのようにしたい場合は、次のようにすることができます。

post_list = ProjectPost.objects.filter(project=project_object).values('post')
于 2013-04-09T02:52:23.423 に答える
1

最近この問題に遭遇しましたが、これが私が解決した方法です。私のソリューションが効率的であるかどうかについて誰かがコメントできれば幸いです。

project_posts = ProjectPost.objects.filter(project=project_object).select_related("post")
posts_lists = map(lambda post: project.post, project_posts)

posts_lists のオブジェクトが正しいタイプになりました。

于 2014-08-06T08:43:47.943 に答える