找不出为什么我一直在跟踪以下错误:
TypeError at / were /reversion/ count()采用一个位置参数,但给出了2个位置参数
#views
…
…
…
memory_limiter = BoatImage.objects.filter(boat_id__isnull=True).exclude(
memory__in=existing_boats_pk).values_list("memory", flat=True)
for i in memory_limiter:
if memory_limiter.count(i) > 3:
memory_limiter.remove(i)shell是如何描述内存限制器的:
>>> for memory in memory_limiter:
... print(memory, type(memory))
...
93 <class 'int'>
93 <class 'int'>
93 <class 'int'>
93 <class 'int'>
93 <class 'int'>
93 <class 'int'>
93 <class 'int'>
100 <class 'int'>
102 <class 'int'>
102 <class 'int'>
102 <class 'int'>
>>> memory_limiter
<QuerySet [93, 93, 93, 93, 93, 93, 93, 100, 102, 102, 102]>
>>>以下方法也得到了同样的结果:
for i in [ x for x in memory_limiter]:
if memory_limiter.count(i) > 3:
memory_limiter.remove(i)问题是伯爵有什么问题?我把这个列表复制到一个单独的*.py模块上,在那里它可以很好地工作…。试图将qs转换为迭代器-same结果。
在单独模块中
a = [93, 93, 93, 93, 93, 93, 93, 100, 102, 102, 102]
for i in a:
if a.count(i) > 3:
a.remove(i)
print(a)
----- >[93, 93, 93, 100, 102, 102, 102]发布于 2019-05-25 16:57:18
这里没什么不对劲的。
memory_limiter = BoatImage.objects.filter(boat_id__isnull=True).exclude(
memory__in=existing_boats_pk).values_list("memory", flat=True) # This returns QuerySet object.
for i in memory_limiter:
# QuerySet class has instance method .count(), but you can not provide parameters. Also, QuerySet does not support remove() method.
# if memory_limiter.count(i) > 3:
print(memory_limiter.count())您的代码在list上工作。但是Django的QuerySet和python的list是不同的对象,有着不同的方法。
但你可以做这样的事。这应该有效(国际水文学组织)。
memory_limiter = list(BoatImage.objects.filter(boat_id__isnull=True).exclude(
memory__in=existing_boats_pk).values_list("memory", flat=True)) # You should cast QuerySet object into list, then you can operate over it as a normal python's list.
for i in memory_limiter:
if memory_limiter.count(i) > 3:
memory_limiter.remove(i)https://stackoverflow.com/questions/56306867
复制相似问题