title: Case insensitive field in Django
body: <p>Currently, I have a Django project containing a model called <code>Event</code> which has several properties, one of them being <code>full_name</code>. </p>
  
  <pre><code>from django.db import models
  
  
  class Event(models.Model):
      description = models.CharField(blank=False, max_length=200)
      full_name = models.CharField(blank=False, null=True, max_length=200, unique=True)
  </code></pre>
  
  <p>What I want to acchieve is to prevent users from making two events in which one would be called <code>MyEvent</code> and the other would be called <code>myevent</code>, so I want the name to not be case sensitive. Furthermore, I come from a country with some funny letters, like <code>š</code>. Users are so used to computer systems not supporting these letters that I want to also prevent the existance of two events, one called <code>šoo</code> and the other <code>soo</code>. </p>
  
  <p>Basically, I have a function <code>myfunction</code> and want to have a model constraint such that for each instance of the model, the value <code>myfunction(instance.full_name)</code> is unique.</p>
  
  <p>My first idea, which sort of works, is to have a model form with a clean full name function:</p>
  
  <pre><code>def clean_full_name(self):
      return myfunction(self.cleaned_data.get('full_name'))
  </code></pre>
  
  <p>This works. However, I now have a view in which I want to display the full names of all events, and here, I want to display the original names. Using my approach, this is impossible (the funcion is one-way only). Is there an elegant solution to this?</p>