2012-04-26 15 views
5

Modeli:Django manytomany öz ilişki düzeni

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


friends = person.friends.order_by('friends__id')[:5] 

Ben ortadaki tablo id (pk) tarafından sipariş arkadaşlar almak gerekir

friends = Person.objects.filter(friends=obj).order_by('-friends__id')[:5] 

da çalıştı.

cevap

5

kullanımı ara tablo doğrudan, ve artık QuerySet. Veya parça siparişinde ham SQL yazmanız gerekiyor.

person.friends.order_by(person.friends.through._meta.db_table+'.id') 
0

friends = person.friends.order_by('pk')

In [20]: [f.pk for f in p.friends.order_by('-pk')] 
Out[20]: [3, 2] 

In [21]: p.pk 
Out[21]: 1 

In [22]: [f.pk for f in p.friends.order_by('pk')] 
Out[22]: [2, 3] 
+0

Bunu denediğimde Bu kişi kimliği ile değil, sipariş kimliği kimliği – kamel

+0

Bir yanıtla birlikte bkz. –

+0

Yine de ortadaki tablo kimliği tarafından sipariş verilmiyor – hoju

İlgili konular