2016-10-15 3 views
0

Я работаю над небольшим проектом, в котором должны быть размещены занятые должности. Ранжирование основано на том, сколько раз было проведено занятие. Мне удалось запросить данные и присвоить занятие. Однако в шаблоне, когда я пытаюсь отображать занятия и их проценты, отображается только их «id». Я хочу, чтобы вместо этого появилось имя оккупации. Ниже приведены потоки # models.pyDjango аннотация в шаблоне

class OccupationGroup(models.Model): 
     group=models.CharField(max_length=200) 
     def __str__(self): 
      return self.group 

    class Occupation(models.Model): 
     group=models.ForeignKey(OccupationGroup) 
     occupation=models.CharField(max_length=200) 
     def __str__(self): 
      return self.occupation 
    class OccupationData(models.Model): 
     group=models.ForeignKey(OccupationGroup) #added for testing 
     occupation=ChainedForeignKey(Occupation,chained_field='group', chained_model_field='group',)#added for testing 

     county=models.CharField(max_length=600) 
     date_of_advertisement=models.DateField(verbose_name="Date of Adveertisement") 
     #source=models.CharField(max_length=200,null=True, blank=True, verbose_name="Source") 
     positions=models.CharField(max_length=200, verbose_name="Number of positions") 

     def __str__(self): 
      return self.occupation 

views.py
def view(request): 
    context_dict={} 
    total_items = OccupationData.objects.count() 
    items = [ 
      {'data': g['occupation'], 'value': g['total'] * 100/  total_items} for g in data 
      ] 
context_dict={'data':items} 
return render(request,'template.html',context_dict) 

template.html
{% for data in data %} 

       {{data.data }} 
       {{ data.value|floatformat:"2" }}%<br> 

{% endfor %} 

Пример вывода

1 23% 
2 21.22% 
3 11.12% 

Обязательный выход

Chemists 23% 
Lawyers 21.22% 
Mathematicians 11.12% 

Что я не могу получить, чтобы получить эту работу?

+0

и если я {% для данных в данных%} {{data.data.occupation}} {{ data.value | floatformat: "2"}} %
{% endfor%} отображает проценты без связанных занятий – ombwayo

+1

Откуда появляется 'data'? –

+0

данные из поля занятия в ** ЗанятиеData ** model – ombwayo

ответ

0

Я, наконец, понял это. Я узнал, что value() не распознает отношения базы данных. Он выбирает точное значение в указанном поле. Поэтому желательно получить все значения в представлениях перед передачей их в шаблон. код ниже решить проблему

def view(request): 
    context_dict={} 
    total_items = OccupationData.objects.count() 
     data=DemandData.objects.values('occupation','occupation__occupation').annotate(total=Count('occupation')).order_by('-total') 
    items = [ 
      {'data': g['occupation__occupation'], 'value': g['total'] * 100/  total_items} for g in data 
      ] 
context_dict={'data':items} 
return render(request,'template.html',context_dict)