Django错误:必须使用切片将精确查找的QuerySet值限制为一个结果?

问题描述

我具有以下模型架构:


class Site(models.Model):
    name = models.CharField(max_length=255)
    location = models.OneToOneField(GeoLocation,on_delete=models.PROTECT,related_name=RelatedNames.ADDRESS,blank=True,null=True)

    account = models.ForeignKey(Account,related_name=RelatedNames.ACCOUNT_SITES)
    _type = models.IntegerField(choices=SiteTypeChoices.CHOICES)
    primary_email = models.EmailField(null=True,blank=True)

    objects = models.Manager()

    def __str__(self):
        return self.name

    def get_site_address(self):
        return str(self.location)


class SiteScore(models.Model):
    site = models.ForeignKey(Site,on_delete=models.CASCADE,related_name=RelatedNames.SITE_SCORES)
    date = models.DateTimeField(default=timezone.now)
    score = models.IntegerField(default=0)
    score_type = models.IntegerField(choices=SiteScoreChoices.CHOICES,null=True,blank=True)

class CustomUser(AbstractUser)
    username = None
    email = models.EmailField(_(Fields.EMAIL_ADDRESS),unique=True)

    accessed_sites = models.ManyToManyField(Site,related_name=RelatedNames.USERS)
    
    USERNAME_FIELD = Fields.EMAIL
    REQUIRED_FIELDS = []

我正在尝试按日期和连接到网站的用户过滤网站得分:

today = timezone.now().date()
worst_scores = SiteScore.objects.filter(date__date=today,site__users=self.request.user).order_by('-score')

但这会引发此错误:

The QuerySet value for an exact lookup must be limited to one result using slicing.

也尝试使用:

        worst_scores = SiteScore.objects.filter(date__date=today,site__users__in=self.request.user)

但是出现错误:

'CustomUser' object is not iterable

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)