2017-04-08 4 views
1

変数 "first_letter"をビューに渡しています。この文字をクエリから返された各項目の最初の文字と比較したいと思います。私は比較するリストがある時点には到達できません。返されるアイテムは1つだけです。クエリーセットの各項目の最初の文字を抽出してテンプレートに渡す必要があります

モデル:

class Subjects(models.Model) 
    subject = models.CharField(max_length=75) 
    .... 

ビュー:私は取得していますどのような観点でこれにより

def subjects_by_letter(request, first_letter): 
    subject_list = Subjects.objects.all() 
    for item in subject_list: 
     letter = item.subject[0] 

     return render_to_response('/path/to/mytemplate.html', { 
      'subject_list': subject_list, 
      'first_letter': first_letter, 
      'letter': letter, 
     }) 

のみ、クエリの最後のレコードの最初の文字である:

... 
for item in subject_list: 
    letter = item.subject[0] 
... 

例: "Apple"、 "Banana" & "Cucumber"という件名のエントリがある場合は、C instea d & Cを含むリストのd。

私は誰かが簡単に何かを見つけられないと思っていたと思います。ありがとう。

答えて

1

質問内のコードは、forループ内に戻ります。リストの外にリストを作成し、最初の文字をループ内に追加する必要があります。

またはlist comprehensionを使用して:魔法のように

def subjects_by_letter(request, first_letter): 
    subject_list = Subjects.objects.all() 
    letter = [item.subject[0] for item in subject_list] # <--- 
    return render_to_response('/path/to/mytemplate.html', { 
     'subject_list': subject_list, 
     'first_letter': first_letter, 
     'letter': letter, 
    }) 
+0

作品。本当にありがとう。 – Fish

関連する問題