title: DJANGO - Queryset and model design
body: <p>So I've been stuck with a design problem for the last couple of days and have sunk countless hours into it, to no avail. </p>
  
  <p>My problem is that I wish return all the active Articles. I have made a method within the model, however am unable to use <code>.filter(is_active=True)</code>which would be the worlds best solution.</p>
  
  <p>So now I have made the method into one long filter in the ArticleManager, the problem being that I cannot seem to figure out a way to count the current clicks in a way that can be useful to me. (The current_clicks method in the Article model is what I am aiming for).</p>
  
  <p>Models.py</p>
  
  <pre><code>class ArticleManager(models.Manager):
      def get_queryset(self):
              return super(ArticleManager, self).get_queryset().filter(article_finish_date=None).filter(article_publish_date__lte=timezone.now()) 
  #this is where i need something to the effect of .filter(article_max_clicks__gt=click_set.count())
  
      class Article(models.Model):
          article_name_text = models.CharField(max_length=200)
          article_max_clicks = models.IntegerField(default=0)
          article_creation_date = models.DateTimeField('date created')
          article_publish_date = models.DateTimeField('date published', null=True, blank=True)
          article_finish_date = models.DateTimeField('date finished', null=True, blank=True)
          def __str__(self):
              return self.article_name_text
          def is_active(self):
              if self.article_finish_date==None:
                  if self.article_publish_date &lt;= timezone.now():
                      return self.current_clicks() &lt; self.article_max_clicks
                  else:
                      return False
              else:
                  return False
          def current_clicks(self):
              return self.click_set.count()
          is_active.boolean = True
          actives = ArticleManager()
  
  class Click(models.Model):
      click_article = models.ForeignKey(Article, on_delete=models.CASCADE) 
      click_user = models.ForeignKey(User, on_delete=models.CASCADE)
      click_date = models.DateTimeField('date clicked')
      def __str__(self):
          return str(self.id) + " " + str(self.click_date)
  </code></pre>
  
  <p>This is how the clicks are created in views.py if this helps</p>
  
  <pre><code>article.click_set.create(click_article=article, click_user=user, click_date=timezone.now())
  </code></pre>
  
  <p>If anyone has any sort of idea of how abouts I should do this it would be greatly appreciated!</p>
  
  <p>Many thanks in advance, just let me know if you need anymore information!</p>