使用这些模型:
class Person(models.Model):
name = models.CharField(max_length=128)
def __str__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
def __str__(self):
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
order_index = models.IntegerField(unique=True)
class Meta:
ordering = ['order_index']
我一直在尝试使用以下代码:
group = Group.objects.get(id=1)
group.members.all() # I want the resulting membership objects to ordered by order_index as default.
这可能吗?类似questions的答案要求您撰写group.members.all().order_by(...)
。我想要它,所以结果默认按order_index
排序。
答案 0 :(得分:0)
这是您获取用户的方式,然后是与该用户关联的成员通过date_joined对其进行排序。不知道你会如何自动完成,因为排序通常是由pk值决定的,我假设它与加入的日期相对应,因为后来加入的pk越高。
user = Person.objects.get(pk=request.user.id)
get_members = user.group.members.all().order_by('date_joined')