2012-05-01 1 views
2

오늘은 장고 콘솔에서 이것을 시도했지만 두 가지 결과가 있습니다. 나는 list.reverse()이 목록을 뒤집어 쓴다고 생각합니다. (즉, 첫 번째 객체는 마지막으로됩니다.) [1]. 그러나 그것은 그럴 듯하지 않습니다.python/django list.reverse() and reverseed (list)

>>> from django.db.models import Q 
>>> q1 = Q(result=1) 
>>> q2 = Q(result=-1) 
>>> q3 = q1 | q2 
>>> form = UserData.objects.filter(user=user).filter(coins__gt=0).filter(q3).order_by('-modified', '-placed').values_list('result', flat=True)[:10] 
>>> form 
Out[14]: [-1, -1, -1, -1, -1, 1, -1, 1, -1, -1] 
>>> form.reverse() 
Out[15]: [1, 1, 1, 1, 1, 1, 1, -1, -1, -1] 
>>> form_bw = [] 
>>> for f in reversed(form): 
...  form_bw.append(f) 
...  
>>> form_bw 
Out[18]: [-1, -1, 1, -1, 1, -1, -1, -1, -1, -1] 

내가 뭘 잘못하고 있니? 분명히 내가 원하는 [1] http://docs.python.org/tutorial/datastructures.html

+0

먼저 결과를 목록으로 변환해야합니다. 'values_list'는 실제로 파이썬리스트를주지 않습니다. –

답변

2

당신이

querysert.order_by('-modified', '-placed').reverse() 
결과가 예상치 못한 경우

실제로

querysert.order_by('modified', 'placed') 

따라서 의미, 단순히

list(reversed(values_list)) 

파이썬

에 역 아니면 주문 로직의 검색어에 가져온 reverse을 확인해야합니다.

1

form는 목록 정말 form_bw

이다? 프롬프트 결과는 비린내가 볼 수 있도록 list.reverse는 결과를 반환하지 않습니다 :

In [1]: lst = [1, 2, 3, 4] 
In [2]: lst.reverse() # <-- note: no result returned here (~ None) 
In [3]: lst 
Out[3]: [4, 3, 2, 1] 
In [4]: 

또한 보조 노트, reversed를 사용하는 더 좋은 방법으로하는 것은입니다 :

또는
In [5]: lst = [1, 2, 3, 4] 

In [6]: rev = list(reversed(lst)) 

In [7]: rev 
Out[7]: [4, 3, 2, 1] 

단지를 사용 음 단계를 슬라이스 :

In [8]: rev = lst[::-1] 

In [9]: rev 
Out[9]: [4, 3, 2, 1] 
2

난 더 장고 전문가입니다하지 따라서 form의 종류가 무엇인지 모르겠습니다. 그러나, 그것은 표준 목록이 아니다 꽤 분명하다 :

>>> form.reverse() 
Out[15]: [1, 1, 1, 1, 1, 1, 1, -1, -1, -1] 

내장이 reverse() 기능은 다른 뭔가를 반환 것으로 보인다 반면 list.reverse() 기능, None 반환합니다. 이것은 form가 목록이 아니라고 결론 내릴 수 있습니다.

form = list(form) 
form.reverse() 

이 또한주의 :

>>> form_bw = [] 
>>> for f in reversed(form): 
...  form_bw.append(f) 

말을 그냥 먼 길이다

는 다음을 시도

>>> form_bw = list(reversed(form)) 
+0

실제로'form = list (form)'과'form.reverse()'가 작동합니다. 그래서, 나는'values_list()'django에서 목록을 반환하지 않는다고 생각한다. – xpanta

4

form은 목록이 아닙니다. QuerySet은 목록과 많은 유사점이 있지만 하나가 아닙니다. 특히 reverse method을 정의하며 실제로 역순으로 항목을 요청하기 위해 데이터베이스로 돌아갑니다.