簡體   English   中英

如何在Django中對模型輸出進行排序?

[英]How can I sort my model output in Django?

我在使用django進行開發時還很新,希望有人能幫助我。 我在一個視圖和一個模板中有兩個主要模型。 我的每個“主”模型都有其自己的“子”模型(帶有外鍵)。 我的輸出很好,到目前為止可以正常工作。

我的問題是,我想按名稱對第二個主要模型的子模型進行排序。 這可能嗎,或者我需要改變什么?

在我的示例中,我想按名稱對“ occupant.last_name”進行排序。

我有一幅現在的樣子: occupant.last_name

我的models.py

class Management[...]
class Employee[...]

class Houses(models.Model):
    name = models.CharField(max_length=50)

    def __str__(self):
        return self.name

class Occupant(models.Model):
    house = models.ForeignKey(Houses, on_delete=models.CASCADE)
    last_name = models.CharField(max_length=50)
    first_name = models.CharField(max_length=50)
    room = models.IntegerField(default=0)

    def __str__(self):
        return self.first_name

我的views.py

class IndexView(ListView):
    context_object_name = 'all_management_list'
    template_name = 'blackboard/index.html'
    queryset = Management.objects.order_by('order_number')

    def get_context_data(self, **kwargs):
        context = super(IndexView, self).get_context_data(**kwargs)
        context['Houses'] = Houses.objects.all()
        # And so on for more models
        return context

我的template.html

{% for houses in Houses %}
<h3>{{ houses.name }}</h3>
<table><tbody>
    {% for occupant in houses.occupant_set.all %}
    <tr>
        <td>{{ occupant.last_name }}, {{ occupant.first_name }}</td>
        <td>{{ occupant.room }}</td>
    </tr>
[...]

非常感謝您的幫助,對不起我的英語不好。 :)

最誠摯的問候

硬盤

您可以通過order_by()在queryset中排序

order通過在類Meta下添加此命令,以last_name的形式使模型成為默認命令

class Occupant(models.Model):
    house = models.ForeignKey(Houses, on_delete=models.CASCADE)
    last_name = models.CharField(max_length=50)
    first_name = models.CharField(max_length=50)
    room = models.IntegerField(default=0)

    def __str__(self):
       return self.first_name
    class Meta:
       ordering = ('last_name',)

暫無
暫無

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

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