【问题标题】:How to update value in the table referenced by foreign key in Django如何更新Django中外键引用的表中的值
【发布时间】:2011-11-12 11:52:48
【问题描述】:

我有一个引用(外键)帖子模型的评论模型,并且帖子模型中有一个布尔字段来告诉这个特定帖子是否有任何评论。

  • 我想要做的是每当对该帖子发表评论时更新帖子的这个布尔字段,为此我必须在视图中做什么。

  • 另外,当我在一个页面上显示所有帖子时,我想先显示那些没有任何评论的帖子,以便人们对其发表评论。

我怎样才能有效地做以下两件事

【问题讨论】:

    标签: django django-models foreign-keys django-views


    【解决方案1】:

    一旦有新评论,您可以使用comment_was_posted signal 更新关联的Post。请参阅此线程以了解总体思路:Django notification on comment submission

    虽然在这种情况下,在您的 Post 模型上创建 count_comments() 方法可能会更好。

    要按给定Post 的评论数对您的帖子进行排序和过滤,请查看Django's docs on aggregation 或此博文:http://agiliq.com/blog/2009/08/django-aggregation-tutorial/

    【讨论】:

    • 实际上我没有使用 django cmets,我做了类似的事情,我需要做很多更改并且不需要 django cmets 提供的所有功能,因此没有使用它......所以现在的重点是因为我不能使用 comment_was_posted 信号我还能做什么?我不能在 cmets 模型中定义一些东西,这样当用户发布评论时,可以在 Post 对象中进行外键引用的更改
    • 好吧,另一种方法是覆盖自定义 cmets-app 的保存方法。检查此主题以获取有关此主题的一些一般信息:martin-geber.com/thought/2007/10/29/…
    • 您提供的链接告诉我可以在哪里编写用于保存前和保存后的代码,但我想知道如何通过使用外键在 cmets 模型中引用父模型我有?我希望我已经通过问题说清楚了?
    • 嗯 ...在保存方法中,您可以使用“self”引用模型的字段。 self.title 将引用您当前实例/评论的标题。如果您的评论类有一个 FK 'post',那么您可以使用 self.post 访问相关实例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    相关资源
    最近更新 更多