簡體   English   中英

訂購Django的ManyToMany關系

[英]Order a ManyToMany relationship, Django

使用這些模型:

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.

這可能嗎? 要回答類似問題,您需要編寫group.members.all().order_by(...) 我正在嘗試使用它,因此默認情況下按order_index對結果進行排序。

這是您獲取用戶的方式,然后與該用戶關聯的成員通過date_joined對其進行排序。 不確定您將如何自動執行此操作,因為排序通常是由pk值決定的,我認為該值將與加入日期相對應,因為pk越高,加入的日期就越晚。

user = Person.objects.get(pk=request.user.id)
get_members =  user.group.members.all().order_by('date_joined')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM