Skip to main content
 首页 » 编程设计

python之Django 查询链接多个过滤器

2025年05月04日28emanlee

这是我的日程对象,

class Schedule(Base): 
    tournament = models.ForeignKey(Tournament, on_delete=models.CASCADE, null=True) 
    first_team = models.ForeignKey(Team, related_name="first_team", on_delete=models.CASCADE, null=True) 
    second_team = models.ForeignKey(Team, related_name="second_team", on_delete=models.CASCADE, null=True) 
    first_score = models.IntegerField(default=0, null=True) 
    second_score = models.IntegerField(default=0, null=True) 
    sport = models.ForeignKey(Sport, on_delete=models.CASCADE, null=True) 
    date = models.DateTimeField() 

I want to fetch the schedules for a specific sport, for the past 30 days for tournaments which have anything other than a 0.0 bias.

这是我的查询

schedules = Schedule.objects.filter(sport=sport).filter(date__gte=date.today()).filter( 
                        date__lte=(date.today() + timedelta(days=30))).order_by("date").exclude(tournament__bias=0.0) 

这行不通,有人可以帮我吗?谢谢。

请您参考如下方法:

您的代码是正确的过滤方式(尽管您可以通过逗号分隔查找合并两个 filter() 方法)。

问题可能是您现在正在过滤:

today() <= date <= today() + 30 days  

因此,如果您没有任何实例的日期在未来 30 天(或今天)内,您将得到一个空集。