首页 > 解决方案 > 基于多个关系计数对象

问题描述

我有三个模型;

class User(AbstractUser):
    id = UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

class UserProfile(Model):
    id = UUIDField(primary_key=True, editable=False)
    user = OneToOneField(User, CASCADE)
    subscription = CharField(max_length=250, null=True, blank=True)

class Image(Model):
    id = UUIDField(primary_key=True, editable=False)
    owner = ForeignKey(User, on_delete=CASCADE, null=True)

我想计算所有者订阅不等于字符串(例如“免费”)的所有图像对象。这可能吗?

标签: pythondjangodjango-modelsdjango-orm

解决方案


您需要使用跨越关系的查找

image_count = Image.objects.exclude(owner__userprofile__subscription='free').count()

推荐阅读