Ты бежишь впереди паровоза
Вот такое не надо
id = models.IntegerField ( primary_key=True )
оно само делается ОРМ
OneToOne это не про то. Это поле, которое связывает две модели, которые по некоторым обстоятельствам были разделены. Раньше их часто употребляли для связи захардкоженной модели User и UserDetails с доп полями, которые нужны были разрабу
FullName
CamelCase - для классов
under_score - для переменных, полей модели и тд
class Person(models.Model):
full_name = models.CharField( default=u"Иванов И.И.", max_length=256 )
# ...
parent = models.ForeighKey('self', blank=True, null=True)
# or
# parent = models.ForeighKey("Person", blank=True, null=True)
то это перестроение всего одного индекса
Но как и раньше - решаешь проблемы, которой еще нет