2016-02-22 51 views
1

我有一個班級,我想顯示每個Car的所有模型,而不需要定期訪問數據庫。所以我創建了一個dict,但我不認爲這是最好的解決方案。我怎樣才能更專業地解決這個問題?我如何分組模型屬性

class Car(models.Model): 

    name = models.CharField(max_length=100) 
    model = models.CharField(max_length=100) 

    def __str__(self): 
     return self.name + '/' + self.model 


def catatlog(request): 

    cars = {} 
    all_cars = Car.objects.all().order_by('name') 
    for i in all_cars: 
     if i.name not in cars.keys(): 
      cars[i.name] = [i.model] 
     else: 
      cars[i.name].append(i.model) 
    return render(request, 'index.html', {'cars':cars}) 

回答

2

您可以使用defaultdict代替:

from collections import defaultdict 

def catatlog(request): 
    cars = defaultdict(list) 
    for i in Car.objects.all(): 
     cars[i.name].append(i.model) 
    return render(request, 'index.html', {'cars':cars})