我的应用程序的一部分包括在新闻提要的顶部显示状态。这是我的状态模型
class Status(models.Model):
user = models.ForeignKey(User)
description = models.CharField(max_length = 600, blank = False)
created_at = models.DateTimeField(auto_now_add = True, editable = False)
image = models.ImageField(upload_to = 'images/statuspics/%Y/%m/%d', blank = True, null = True)
utility = models.ForeignKey(Utility)
numlikes = models.IntegerField(default = 0)
class Meta:
ordering = ["-created_at"]
# Change plural form
verbose_name_plural = "statuses"
然后我会得到回复,这是一种指示帖子是如何被回复的方式,以及宣布它的状态
class Response(models.Model):
post = models.ForeignKey(Post, null = True, blank = True)
status = models.ForeignKey(Status, null = True, blank = True)
status_level = models.IntegerField(
blank = True,
choices = STATUS_CHOICES,
default = 1)
created_at = models.DateTimeField(auto_now_add = True, editable = False)
基本上,我想做的是只显示没有任何响应的状态。我认为我需要在视图中使用exclude(),但我不完全确定如何在这种情况下正确使用它。
你能试试Status.objects.exclude(response__isnull=True)
吗?它基本上是在Response
上对模型Status
进行反向查找。
Django文档关于isull。
您也可以尝试这个(反向查找)
Status.objects.filter(response__isnull=False)
这不是Djannaut的做法,但您可以使用获得没有任何响应的状态列表
[s for s in Status.objects.all() if s not in [r.status for r in Response.objects.all()]]