title: Setting Django 'unique' model field parameter after creation of model objects with non-unique values for that field?
body: <p>I have a 'project' Model and I've created 4 of them with the names 'Alan Parson's', 'Gutenberg', 'Gutenberg' and 'X.'</p>
  
  <p>I just realized, I want the names to be unique, so I set unique = True on the project.name field</p>
  
  <p>Now, I can't create another 'Gutenberg' or 'X' or whatever, but django has no issue with the fact that previous models have non-unique names.</p>
  
  <p>How is django ensuring uniqueness of the new fields? Why doesn't it matter that old ones are non-unique, and -in general- is there anyway to tell which model field attributes (null, blank, unique...etc) are going to require a 'hard' change to the db schema and a migration?</p>
  
  <hr>
  
  <p>looks like if I try and edit one of the existing projects with a non-unique name (from a model form), I get an error about how the name is non-unique, but I can access these models no problem and even add other objects to their many to many fields without a warning. This ties into my last question - seems like some of the parameters specified on the models dictate how their model forms work and not how they do. I think blank = true means model form fields can be empty, but null = true is 'stronger' in that it means it is ok if the actual field itself is data-less. </p>
  
  <p><strong>So, basically, is there any way to easily see which parameter changes necessitate a migration or 'hard' db change</strong></p>