2016-02-12 5 views
0

Im новый Джанго и пытается узнать с построением форумДжанго трудности при отображении данных (количество)

моя модель

class Subject(models.Model): 
    name=models.CharField(max_length=128) 
    created=models.DateTimeField('Created Date') 


    def __str__(self): 
     return self.name 

class Book(models.Model): 
    book_subject=models.ForeignKey(Subject,on_delete=models.CASCADE) 
    book_title=models.CharField(max_length=128) 
    url=models.URLField() 
    votes=models.IntegerField(default=0) 


    def __str__(self): 
     return self.book_title 

мой запрос к базе данных в Django оболочки

Subject.objects.all() 
>>>[<Subject: electronics>, <Subject: compter science>] 

q=Subject.objects.get(id=2) 
q.book_set.all() 
>>>[<Book: python django>, <Book: python flask>] 

Как я могу получить количество книг для каждой темы. (получить кол-во книг для вопросы электроники и информатики) Я знаю, что это может быть прямой ответ. Я хотел показать шаблон, как на форуме, где он отображает имя темы и количество книг, он содержит

Может кто-то помочь мне с запросом, чтобы получить количество книг для каждого предметов

Любая помощь очень ценится. .THANKS заранее

+1

Пожалуйста, выберите более подходящее название для своего вопроса. Ваша проблема не в отображении данных, а в подсчете подсчетов. –

+0

@ Daniel Roseman ... внесли изменения – spidy

ответ

3

Если вам нужно только количество книг по определенной теме, есть count

Subject.objects.get(id=2).book_set.count() 

Если вам нужны предметы с отсчетом для числа книг для них вы можете annotate

from django.db.models import Count 
subjects = Subject.objects.annotate(num_books=Count('book')) 

for subj in subjects: 
    print subj.num_books 
+0

@ Sayse..Im get error "FieldError: Невозможно разрешить поиск по ключевым словам« книги »в поле. Выбор: книга, созданная, идентификатор, имя« – spidy

+0

@AmoghAngadi - book' – Sayse

+0

@AmoghAngadi - Не беспокойтесь, theres ссылка в моем ответе на документацию для него – Sayse