title: limiting the number of displayed instances of a model in Django Admin
body: <p>I have a model which over timer will have several thousand to tens of thousands of instances. Each of those is unique. In the Django Admin interface I can see all the instances and access them etc. Is there a way for me to limit the number of instances I can see to lets say 20 or 50 sorted in whichever order and I can look through them like pages? I ask because loading all several thousand instances will likely clog up my server. So how do I limit it?</p>
  
  <p>My model is as follows if that helps:</p>
  
  <pre><code>#Student Type
  class StudentType(models.Model):
      name = models.CharField(max_length = 400, null=True, blank = True, verbose_name = 'Name')
  
      def __unicode__(self):
          return self.name
  
  #Old -- Deprecated:Student Images Folder
  def student_directory_path(instance, filename):
      return 'students/%s' % filename
  
  #Student Images Folder
  def st_profile(instance, filename):
      # file will be uploaded to MEDIA_ROOT/user_&lt;id&gt;/&lt;filename&gt;
      return 'students/%s' % filename
  
  
  #Student Profile
  class ProfileStudent(models.Model):
      user = models.OneToOneField(app_settings.USER_MODEL,)
      created = models.DateTimeField(auto_now=False, auto_now_add=True, blank = False, null = False, verbose_name = 'Creation Date')
      email = models.EmailField(max_length=254, blank=True, null=True)
      name = models.CharField(max_length = 400, null=True, blank = True, verbose_name = 'Name')
      last_name = models.CharField(max_length = 400, null=True, blank = True, verbose_name = 'Last Name')
      phone_number = models.CharField(max_length = 12, null=True, blank = True, verbose_name = 'Phone Number')
      city = models.ForeignKey(City, null=True, blank = True, verbose_name = 'City')
      adress = models.CharField(max_length = 400, null=True, blank = True, verbose_name = 'Address')
      bank_account = models.CharField(max_length = 400, null=True, blank = True, verbose_name = 'Bank Account')
      braintree_submerchant_account = models.CharField(max_length = 400, null=True, blank = True, verbose_name = 'Braintree Account')
      date_of_birth = models.DateField(auto_now=False, auto_now_add=False, blank = True, null = True, verbose_name='Date of birth')
      GENDER = (
         ('male','Male'),
         ('female','Female'),
      )
      gender = models.CharField(max_length=20, choices=GENDER, blank = True, null=True, verbose_name = 'Gender' )
      language = models.ManyToManyField(Language)
      student_type = models.ForeignKey(StudentType, null = True, blank = True, verbose_name='Type')
      profile_image = models.ImageField(upload_to=st_profile, blank = True, null = True, default='/perfil.png')
      is_embassador = models.BooleanField(default=False)
      is_new = models.BooleanField(default=True)
      # True if user from the old web:
      legacy = models.BooleanField(default=False, blank=True)
      legacy_id = models.IntegerField(default=0, null=True, blank=True)
      # Used to invite other users: created at signup
      invite_code = models.ForeignKey(PromotionalCode, default=None, blank=True, null=True)
  
      class Meta:
          verbose_name_plural = 'Students'
          verbose_name = 'Student'
  
      def __unicode__(self):
          return "%s" % (self.user.email)
  
  
      def save(self, *args, **kwargs):
          if not self.pk:
              invite_code = PromotionalCode()
              invite_code.code = uuid.uuid4().hex[:6].upper()
              try:
                  invite_code.pc_type = PromotionalCodeType.objects.all().filter(pk=1).get()
              except:
                  invite_code.pc_type = None
              invite_code.save()
              self.invite_code = invite_code
          super(ProfileStudent, self).save(*args, **kwargs)
  </code></pre>