2017-02-07 43 views
0

我有一個模型:django如何聚合外鍵工作?

from django.db import models 

class Author(models.Model): 
    name = models.CharField(max_length=100) 
    age = models.IntegerField() 

class Publisher(models.Model): 
    name = models.CharField(max_length=300) 
    num_awards = models.IntegerField() 

class Book(models.Model): 
    name = models.CharField(max_length=300) 
    pages = models.IntegerField() 
    price = models.DecimalField(max_digits=10, decimal_places=2) 
    rating = models.FloatField() 
    authors = models.ManyToManyField(Author) 
    publisher = models.ForeignKey(Publisher) 
    pubdate = models.DateField() 

class Store(models.Model): 
    name = models.CharField(max_length=300) 
    books = models.ManyToManyField(Book) 
    registered_users = models.PositiveIntegerField() 

我無法理解下面的代碼工作 enter image description here

這是如何從Django的官方文檔中,小抄。 https://docs.djangoproject.com/en/1.10/topics/db/aggregation/

我所要做的是計算總票數爲以下模型 我用Question.objects.filter(owner_id=1).annotate(total_votes=Sum('votes'))的文檔。但這不適合我。

class Question(models.Model): 
    question_text = models.CharField('Question',max_length=200) 
    pub_date = models.DateTimeField('date published') 
    owner = models.ForeignKey(User,default=DEFAULT_USER_ID) 

class Choice(models.Model): 
    question = models.ForeignKey(Question, on_delete=models.CASCADE) 
    choice_text = models.CharField(max_length=200) 
    votes = models.IntegerField(default=0) 

回答

0

您的問題模型沒有票你的選擇模式確實

Question.objects.filter(owner_id=1).annotate(total_votes=Sum('choice__votes'))