我的应用程序的一部分包括在新闻源顶部显示状态。我有我的状态模型
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(),但在这种情况下,我并不完全确定如何正确使用它。
答案 0 :(得分:1)
你能试试Status.objects.exclude(response__isnull=True)
吗?它基本上是对Status
上的模型Response
进行反向查找。
答案 1 :(得分:0)
你也可以试试这个(反向查找)
Status.objects.filter(response__isnull=False)
答案 2 :(得分:-1)
这不是Djangonaut会这样做的方式,但你可以获得状态列表没有任何回应:
[s for s in Status.objects.all() if s not in [r.status for r in Response.objects.all()]]