django manytomany自我关系顺序由中间表id

kam*_*mel 5 django

模型:

class Person(models.Model):
   friends= models.ManyToManyField("self", blank=True, null=True)


friends = person.friends.order_by('friends__id')[:5]
Run Code Online (Sandbox Code Playgroud)

我也试过了

friends = Person.objects.filter(friends=obj).order_by('-friends__id')[:5]
Run Code Online (Sandbox Code Playgroud)

我需要通过中间表id(pk)获取订购的朋友.

okm*_*okm 5

直接使用中间表,它不再是查询集.

friends = [pf.to_person for pf in 
    person.friends.through.objects.filter(from_person=person)
    .select_related('to_person')
    .order_by('pk')]
Run Code Online (Sandbox Code Playgroud)

或者您需要在订购部分编写原始SQL.

person.friends.order_by(person.friends.through._meta.db_table+'.id')
Run Code Online (Sandbox Code Playgroud)