Python Django:根据数据记录的vValue列从同一个表中获取信息

Python Django:根据数据记录的vValue列从同一个表中获取信息,python,django,Python,Django,我正在为一个网站构建一个论坛应用程序,在Posts表中有一个“quote_id”列,如果有人引用某个帖子进行回复,可以将其放入post_id中。这是Posts表的一部分,就像所有其他Posts一样。但是,当我检索到与所选主题对应的主题匹配的所有记录时,会有一些记录引用了其他帖子。在Django ORM中,我似乎找不到一种方法来检索引用的帖子信息,以便与引用它的帖子一起显示(在引用它的帖子中显示)。到目前为止,我掌握的情况如下: def show_topic_posts(request,forum

我正在为一个网站构建一个论坛应用程序,在Posts表中有一个“quote_id”列,如果有人引用某个帖子进行回复,可以将其放入post_id中。这是Posts表的一部分,就像所有其他Posts一样。但是,当我检索到与所选主题对应的主题匹配的所有记录时,会有一些记录引用了其他帖子。在Django ORM中,我似乎找不到一种方法来检索引用的帖子信息,以便与引用它的帖子一起显示(在引用它的帖子中显示)。到目前为止,我掌握的情况如下:

def show_topic_posts(request,forum_id,topic_id):
    posts = Post.objects.filter(topic_id=topic_id)
    topic = Topic.objects.get(topic_id=topic_id)
    context = RequestContext(request,{'posts':posts,'topic':topic})
    return render_to_response('forums/topics_posts.html',context_instance=context)

class Post(models.Model):
    post_id = models.AutoField(primary_key=True)
    forum_id = models.ForeignKey(Forum)
    topic_id = models.ForeignKey(Topic)
    post_date_time = models.DateTimeField(auto_now=True)
    post_user_id = models.ForeignKey(User)
    post_quote_id = models.IntegerField(null=True,blank=True)
    post_body = models.TextField()
    post_likes = models.IntegerField(default=0)
    post_is_flagged = models.BooleanField(default=False)

def __unicode__(self):
    return '%i' % self.topic_id

def get_absolute_url(self):
    return '/forums/%s/%s/%s/' % (str(self.forum_id.pk), str(self.topic_id.pk),self.topic_id)

我怎么能这样做呢?我搜索了谷歌、Django图书和Django网站,试图找到一种方法来实现这一点。谢谢

删除
post\u quote\u id
字段,并为您的
post
模型创建递归

quoted_by = models.ManyToManyField('self')
这样,帖子可以引用其他帖子,您应该能够轻松获取与某个主题匹配的所有帖子的相关帖子

example_post = Post.objects.get(pk=1)
posts_that_quote_my_example_post = example_post.quoted_by.all()
在模板中,您可以获取引用以下特定帖子的帖子:

<ul>
  {% for quote in post.quoted_by.all %}
    <li>{{ quote.post_body }}</li>
  {% endfor %}
</ul>
    {post.quoted_by.all%}
  • {{quote.post_body}
  • {%endfor%}

如果你想额外存储引用某篇文章的人,你需要添加一个

那么将post_quote_id更改为manytomy('self')?我这样做了,然后把我的模板改成了每个帖子上面的这个。这就是你的意思吗?{%for post in posts%}{%if post.postquote%}{post.postquote.post_body}{%endif%}{%endfor%}因为按照我的方式,我会获取所有具有特定主题id的记录,并使用for循环在模板中循环它们。不确定我是否完全理解您做了什么或想做什么,但请看我的答案的补充。为了得到一篇文章的相关文章/引文,你必须循环浏览它们。你在修改后的文章中加入的内容正是我需要做的。谢谢你的帮助。我只是一个有中级经验的程序员,我在任何地方都找不到答案。谢谢!