1

Django에서 object.manytomany.all().reverse()을 호출하고 해당 템플릿에 해당하는 object.manytomany.all.reverse을 호출하면 다 대다 관계가 작동하지 않는 것 같습니다.objects.all() reverse() 또는 내림차순 얻기

어떻게 many-to-many 관계의 결과 목록을 뒤집을 수 있습니까?

답변

1

이 오류가 발생하거나 코드 조각을 오해 할 수 있습니다. 책의 인스턴스에 여러 명의 저자가있을 수있는 책 모델이 있다고 가정 해보십시오.

class Author(models.Model): 
    ... 

class Book(models.Model): 
    authors = models.ManyToManyField(Author) 

지금이 모든 예약 인스턴스의 QuerySet를 반환합니다 - Book.objects.all()

objects은 모델의 기본 관리자이며 복수입니다. object은 파이썬에서 자체적으로 사용하는 것으로, 자신의 변수로 사용하지 않는 것이 가장 좋습니다. "manytomany"가 Django의 필드 나 함수가 아니라는 것도 가치가 있습니다. 그것이 당신이 정의한 것이 었는지 알려주십시오. 그래서 책 인스턴스가있을 수있는 ManyToMany 여러 저자를 얻을 수 있습니다 :

book = Book.objects.all()[0] 
type(book.authors) # tells you this is a ManyRelatedManager 
type(book.authors.all()) # tells you this is a QuerySet 
book.authors.all() # will print out the authors for this book 

을 이제 저자가 그 저자가 검색어 세트의 형태로, 당신은 반전을 포함한 모든 일반적인 검색어 세트 조작을 할 수 있음.

book.authors.all().reverse() 

objects.order_by("<field name>").reverse() 사용을 고려할 수 있도록 정렬되지 않은 무언가를 반대하는 것은 큰 의미하지 않는다는 것을 기억하십시오. 희망이 도움이됩니다. 대신 objects.order_by의

+0

("") .reverse() 당신이 objects.order_by을 사용할 수 있습니다 ("- ") 내림차순위한 . –

+0

템플릿에서이 쿼리 세트를 쉽게 호출 할 수있는 방법을 만들 수 있습니다. 나는. object.get_m2m_reversed, 내부에서 self.manytomany.all()을 호출합니다. order_by ('- somefield') – ilvar