title: Django Tag model design
body: <p>I am wondering if the following is the correct way to create tagging system for images and being able to render a tag cloud:</p>
  
  <pre><code>from django.db import models
  
  class Tag(models.Model):
      word        = models.CharField(max_length=35)
      slug        = models.CharField(max_length=250)
      created_at  = models.DateTimeField(auto_now_add=False)
  
      def __unicode__(self):
          return self.word
  
  class Photo(models.Model):
      slug                = models.CharField(max_length=250)
      filename            = models.CharField(max_length=200)
      extension           = models.CharField(max_length=4)
      size                = models.IntegerField()
      ...
      tags                = models.ManyToManyField(Tag)
  
      def __unicode__(self):
          return self.slug
  </code></pre>
  
  <p>Note that my database table will include millions of rows and each image will have 4-8 tags.</p>
  
  <p>Please advise.</p>