I might be doing something wrong, but if the following example code is executed:
Attribute.objects.create(name='Height', datatype=Attribute.TYPE_TEXT)
There is no content_type. Furthermore, it can be executed multiple times resulting in several attributes, and judging from unique_together = ('site', 'content_type', 'slug'), perhaps it is not desirable?