gpt4 book ai didi

python - Django-按类型过滤查询

转载 作者:行者123 更新时间:2023-11-29 22:28:02 25 4
gpt4 key购买 nike

我想显示每种通知类型的一个通知以及最新的通知。我的问题是如何获取每种通知类型并显示该通知类型的最新信息。

notifications = Notification.objects.filter(**condition). \
exclude(notification_user__in=users). \
order_by('notificationType__priority','-start_date')[:1]

模型.py

class Notification(models.Model):
title = models.CharField(max_length=75)
description = models.TextField()
start_date = models.DateTimeField()
end_date = models.DateTimeField()
application = models.ManyToManyField('Products.Application')
notificationType = models.ForeignKey(NotificationType)
url = models.URLField(null=True, blank=True)
region = models.ManyToManyField('Geolocations.Region', null=True, blank=True)
image = models.ImageField(null=True, blank=True)
user = models.ManyToManyField(User, through='Notification_User')

class NotificationType(models.Model):
type = models.CharField(max_length=30)
priority = models.IntegerField(max_length=3)
color = RGBColorField()

这仅显示最新的通知,与通知类型无关。有什么建议吗?

更新

现在我将通知插入到列表中。但这样行不通我的想法是,如果 notification_type 的优先级值(唯一的 int)不存在,则添加到列表中

notifications=[]    
if n.objects.filter(notification_type__priority=notifications).exists():
notifications.append(n)

最佳答案

您可以单独捕获所有通知,然后将它们合并到一个 QuerySet 中:

c1 = Notification.objects.filter(condition=[CONDITION1_HERE]). \
exclude(notification_user__in=users). \
order_by('notificationType__priority','-start_date')[:1]

c2 = Notification.objects.filter(condition=[CONDITION2_HERE]). \
exclude(notification_user__in=users). \
order_by('notificationType__priority','-start_date')[:1]

notifications = c1 | c2 # A QuerySet that merges c1 and c2

通过使用 for 循环可以使这变得更智能,这样您就可以使用 **condition 而不必定义 [CONDITION1_HERE][ CONDITION2_HERE],但我需要看看模型是什么样子。

关于python - Django-按类型过滤查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30081334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com