这是我的模型:
class Event(models.Model):
user = models.ForeignKey(User, blank=True, null=True, db_index=True)
name = models.CharField(max_length = 200, db_index=True)
platform = models.CharField(choices = (("ios", "ios"), ("android", "android")), max_length=50)
class User(AbstractUser):
email = models.CharField(max_length=50, null=False, blank=False, unique=True)
Event
就像一个分析事件,所以我很可能为一个用户提供多个事件,其中一些事件带有platform=ios
和一些与platform=android
,如果用户已登录多个设备。我想查询有多少用户同时拥有 ios 和 android 设备。所以我写了一个这样的查询:
User.objects.filter(Q(event__platform="ios") & Q(event__platform="android")).count()
返回 0 个结果。我知道这是不正确的。然后我想我应该尝试只查询 iOS 用户:
User.objects.filter(Q(event__platform="ios")).count()
返回了 6,717,622 个结果,这是出乎意料的,因为我只有 39,294 个用户。我猜这不是在计算用户,而是在计算Event
实例,这对我来说似乎是不正确的行为。有人对这个问题有任何见解吗?