2017-01-03 59 views
-1

我有一個作家模型/表和文章的模型,如:如何獲得django中外鍵最多的一行?

class Writer(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    pic = models.URLField() 
    start_date = models.DateField('date of start', blank=True, null=True) 
    about = models.TextField(max_length=300) 

class Article(models.Model): 
    writer = models.ForeignKey(Writer) 
    name = models.CharField(max_length=100) 
    content = models.DecimalField(max_digits=10, decimal_places=2) 
    date = models.DateField(auto_now=False, auto_now_add=True) 

一個文章只能有一個作家,還是一位作家可以有很多Articles.I可以得到所有的作家與

Writer.objects.all() 

但我想要大多數文章的作家。我怎樣才能做到這一點?

+2

'文章= Writer.objects.annotate(NUM_ARTICLES =計數( '文章'))ORDER_BY( ' - NUM_ARTICLES')' 閱讀有關聚合函數[這裏](HTTPS://docs.djangoproject .COM/EN/1.10 /主題/ DB /匯聚/) – latsha

回答

3

試試這個 -

higest_count = Writer.objects.annotate(num_articles=Count('article')).order_by('-num_articles')[0].num_articles 
print(higest_count) #this will print highest count 
0

返回一個整數,表示與QuerySet匹配的數據庫 中的對象數。 count()方法從不引發異常。

示例:

返回數據庫中的入口總數。

Entry.objects.count() 

返回其標題中包含「列儂」

Entry.objects.filter(headline__contains='Lennon').count() 

有了這個計數方法,你可以通過做Writer.article_set.count()算一組相關的Articles條目的數量和獲得最多的物品articles