1. from django.contrib.sites.managers import CurrentSiteManager
    
  2. from django.contrib.sites.models import Site
    
  3. from django.db import models
    
  4. 
    
  5. 
    
  6. class AbstractArticle(models.Model):
    
  7.     title = models.CharField(max_length=50)
    
  8. 
    
  9.     objects = models.Manager()
    
  10.     on_site = CurrentSiteManager()
    
  11. 
    
  12.     class Meta:
    
  13.         abstract = True
    
  14. 
    
  15. 
    
  16. class SyndicatedArticle(AbstractArticle):
    
  17.     sites = models.ManyToManyField(Site)
    
  18. 
    
  19. 
    
  20. class ExclusiveArticle(AbstractArticle):
    
  21.     site = models.ForeignKey(Site, models.CASCADE)
    
  22. 
    
  23. 
    
  24. class CustomArticle(AbstractArticle):
    
  25.     places_this_article_should_appear = models.ForeignKey(Site, models.CASCADE)
    
  26. 
    
  27.     objects = models.Manager()
    
  28.     on_site = CurrentSiteManager("places_this_article_should_appear")