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, on_delete=models.PROTECT, 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
AzyCrw4282

几乎没有可能的解决方案

date__date=today

返回结果> 1,因此失败。您可以尝试传递更准确的当下对象(例如,自定义形成的对象)并检查是否可行吗?

这会发生什么

worst_scores = SiteScore.objects.filter(date__date=today, site__users=self.request.user).order_by('-score')[0] 

如果您只想按一个特定项目过滤,请尝试使用.get()而不是filter()

对于几个,您可以使用 __in,例如

products = Product.objects.filter(seller__in=account)

因此使用__in查找[Django-doc]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

django错误,“用于精确查找的QuerySet值必须限制为使用切片的一个结果”

必须使用切片将精确查找的QuerySet值限制为一个结果。过滤错误

精确查找的QuerySet值必须使用切片限制为一个结果

需要帮助解决错误“精确查找的 QuerySet 值必须限制为使用切片的一个结果”

ValueError对于精确查找的QuerySet值必须限制为使用Django视图切片的一个结果

Django objects.get():用于精确查找的QuerySet值必须使用切片限制为一个结果

Django 信号:精确查找的 QuerySet 值必须使用切片限制为一个结果

如何解决“用于精确查找的QuerySet值必须限制为使用切片的一个结果。” Django中的错误

如何获得解决此错误的信息“精确查找的QuerySet值必须限制为使用切片的一个结果。”

如何让用户关联到另一个模型 DRF。ValueError:精确查找的 QuerySet 值必须使用切片限制为一个结果

我如何解决精确查找的 QuerySet 值必须限制为使用切片的一个结果。姜戈

精确查询的QuerySet值必须使用slicing-Django限制为一个结果

将查找请求限制为一个结果

在不使用切片的情况下,限制了Django QuerySet的结果数量

使用iloc时,“试图从DataFrame的切片副本上设置一个值”错误

django-在结果受限制的queryset上切片/过滤后过滤

将SQL结果限制为使用“ in”搜索的每个pkey的一个结果

类型错误:列表索引必须是整数或切片,而不是元组我得到一个类型错误:

将 LEFT JOIN 限制为最多一个结果

将JOIN限制为一个结果

Django QuerySet切片返回意外结果

numpy:尝试在数组的一个切片的一个切片上设置值

使用一个新值更改列表切片的值

如何使用 tf.gather 从第一个轴切片值?

将值分配给数据帧中的新列时出现错误“试图在数据帧的切片副本上设置一个值”

为什么将列表切片分配给另一个变量会改变结果?

append 的第一个参数必须是切片;有无类型 nil