장고 모델에서 임의의 여러 객체를 가져와야합니다.Django에서 임의의 여러 객체를 가져올 때 쿼리 세트는 어떻게 작동합니까?
은 내가 입력하여 모델 사람에서 하나 개의 임의 객체를 얻을 수 있습니다 알고
person = Person.objects.order_by('?')[0]
그런 다음, 나는이 작업을 수행 단순히 수있는 말 How to get two random records with Django에 제안을 보았다 그러나
people = Person.objects.order_by('?')[0:n]
, Django는 객체를 반환하는 대신 [0 : n]을 추가하자마자 QuerySet 객체를 반환합니다. 이것은 그들이이라고 나는 다음 검색어 세트가 평가 나는이 2 개의 다른 사람들을위한 FIRST_NAME과 LAST_NAME을 얻을
print(people[0].first_name, people[0].last_name)
을 요구하는 경우 그 불행한 결과를 초래 (오른쪽?). 첫 번째 쿼리에서 반환 된 사람들의 실제 목록을 얻으려면 어떻게해야합니까?
나는이 시도 파이썬 3.4.0 장고 1.7.1
이것은 매우 이상하게 보입니다. 여러분은 인수를 사용하여 함수를 호출하고 인수의 동작을 수정할 수 있습니다.함수가 쿼리 집합에이 효과를 줄지 결정하는 방법이 있습니까? 비슷한 성질을 가진 queryset과 같은 클래스가 더 있습니까? – Gunnar
@Gunnar : 실제로 이것은 프로그래밍에서 일반적인 개념입니다. '가변적 인'객체라고합니다. 예 : 튜플은 변경 될 수 없으며 (불변), 각 변이는 복사본을 반환하지만 목록은 변경 가능하며'append '와 같은 함수는 실제로 목록 인스턴스 자체를 변경합니다. 'append (list, item) '대신에'list.append (item)'이라는 사실은 순수하게 접근성을 높이고 전역 네임 스페이스를 어지럽히는 것을 방지하기위한 것입니다. 일부 기능 ('bool()')은 캐싱이 어떻게 구현 되었기 때문에 처음에는 관련이없는 속성 (순서)에 영향을주기 때문에 유일하게 고유합니다. – knbk