2017-02-26 59 views
0

我在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 

模板。 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> 
[...] 

非常感謝你幫助和抱歉我的英語不好。 :)

與問候

borsTiHD

回答

2

您可以查詢集由ORDER_BY()的姓氏

爲了使默認順序模型通過在類元添加這種

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',) 
+0

感謝它的工作。 :)我還發現了另一個解決方案({%爲佔用者在houses.occupant_set.all | dictsort:「last_name」%})。但我想我會更喜歡你的。 :D – borsTiHD

+0

您的解決方案可以,但不是最好的性能:) –

+0

使用您的解決方案的另一個原因。非常感謝。 :D對不起,我不能滿足你的答案。 :/ – borsTiHD

相關問題