【发布时间】:2015-12-09 21:10:03
【问题描述】:
鉴于此模型:
from django.db import models
class Post(models.Model):
text = models.CharField(max_length=255)
class Comment(models.Model):
text = models.CharField(max_length=255)
needs_attention = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
post = models.ForeignKey(Post)
我可以annotate帖子列表:
Post.objects.annotate(last_comment_date=Max('comment__created_at'))
要知道last_comment_date,如何注释为last_comment_needs_attention设置值?
【问题讨论】:
-
请多解释一下您的问题。"为 last_comment_needs_attention 设置一个值"
-
是的,如果
Post的最后一条评论将标志needs_attention设置为True,我想现在。解释清楚了吗? -
你可以使用过滤器 Post.objects.filter(need_attention=True).annotate(last_comment_date=Max('comment__created_at'))
-
抱歉,我需要所有帖子,并且我想要一个值为“last_comment_needs_attention”的值。你所说的可以用
Post.objects.filter(comment__needs_attention=True)来完成,但这意味着让所有有评论的帖子都把needs_attention设置为True。那是完全不同的。 -
你可以使用conditional expressions来做到这一点。
标签: django python-2.7 django-models