rel_name is no longer used for ManyToManyFields. If your model has more than one ManyToManyField to the same foreign model, differentiate the fields using the field name, not rel_name. Also, give both of the ManyToManyFields a singular attribute, which defines the name of the related object in singular format. (This is an obscure case, but it's included here for completeness.)

Syntax for subclassing models (add_fields, remove_fields) has changed. See tests/testapp/models/subclassing.py for examples.

bar and sites now have explicit names, and admin.fields was changed to use bar instead of bar_id.

ordering was also changed to use the explicit name bar instead of bar_id. bar_id isn't used anywhere anymore; always use the explicit field name as defined in the model.

"sites" is the explicit field name for the Sites many-to-many relationship. Previously, Django calculated this automatically by using the module_name of the related model by default, or rel_name if it was given.

The verbose_name is now an optional first argument to Fields. For ForeignKeys, ManyToManyFields and OneToOneFields, use a named argument: verbose_name="foo".

Don't forget to remove the commas after each Field, because they're class attributes instead of list elements now.

Custom methods (such as __repr__() here) still go at the class level. They haven't changed.