0

私はジャンゴの開発でかなり新しいです。誰かが私を助けてくれることを願っています。 私は1つのビューと1つのテンプレートの2つのメインモデルを持っています。 私の「メイン」モデルのそれぞれには、独自の「サブ」モデル(外部キー付き)があります。 私の出力は問題なく、これまでのところ動作します。モデル出力をDjangoでどのように並べ替えることができますか?

私の問題は、2番目のメインモデルのサブモデルを名前で並べ替えることです。これは可能ですか、これを変更するには何が必要ですか?

私の例では、'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で

あなたはメタクラスの下にこれを追加することにより、ORDER_BY()

ためLAST_NAMEによってモデルのデフォルトの順序を作ることにより、クエリセットに並べ替えることができます

答えて

2

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

ありがとうございました。 :)私はまた別の解決策を見つけました({{%}}})。しかし、私はあなたのことを好きになると思う。 :D – borsTiHD

+0

あなたのソリューションは大丈夫ですが、最高のパフォーマンスではありません:) –

+0

あなたのソリューションを使用するもう一つの理由。どうもありがとうございます。 :Dそして申し訳ありませんが、私はあなたの答えをupvoteすることはできません。 :/ – borsTiHD

関連する問題