簡體   English   中英

django從queryset返回外鍵對象?

[英]django return foreign key object from queryset?

所以我有三個型號

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")

但是這會返回ProjectPost對象的列表,而不是Post對象的列表。 這樣做的正確方法是什么?

您可能想要使用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')

最近我自己遇到了這個問題,這就是我解決它的方法。 如果有人可以評論我的解決方案是否有效,那就太喜歡了。

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

posts_lists中的對象現在具有正確的類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM