我有以下2个Django模型:
from django.db import models
class B(models.Model):
name = models.CharField(null=False, blank=False, max_length=255)
def __str__(self):
return self.name
class A(models.Model):
name = models.CharField(null=False, blank=False, max_length=255)
b = models.ManyToManyField(B, related_name="A_b")
我创建了以下实例:
p = B.objects.create(name="P")
q = B.objects.create(name="Q")
r = B.objects.create(name="R")
f = A.objects.create(name="F")
f.add(r)
f.add(q)
f.add(p)
f.save()
现在,当我在Bs
上迭代f
时,我得到以下内容:
>>> [i for i in f.b.iterator()]
['R', 'Q', 'P']
如何遍历与B
关联的f
个对象,使其按字母顺序排列?
答案 0 :(得分:3)
相关对象是查询集。所以你可以在任何你喜欢的领域订购:
f.b.order_by('name')
答案 1 :(得分:2)
我不知道是否有其他方法,但我通常做的是利用model Meta.ordering
之类的:
class B(CachingMixin, MPTTModel):
name = models.CharField(null=False, blank=False, max_length=255)
class Meta:
ordering = ['name']