Я столкнулся с этим сообщением по поводу обезглавливания Django:
from django.contrib.auth.models import User
User.add_to_class('openid', models.CharField(max_length=250,blank=True))
def get_user_name(self):
if self.first_name or self.last_name:
return self.first_name + " " + self.last_name
return self.username
User.add_to_class("get_user_name",get_user_name)
Я понимаю, что это не идеально, и лучше добавить поля и функции к User
через отдельную модель Profile
.
С учетом сказанного я просто хочу понять, как это будет работать:
-
Где бы я поместил код исправления обезьяны?
-
Когда выполняется запуск кода - только один раз? один раз за запуск интерпретатора Python? один раз за запрос?
-
Предположительно, мне все равно нужно изменить схему БД. Поэтому, если я опустил таблицу
User
и запустил./manage.py syncdb
, мог быsyncdb
"знать", что новое поле было добавлено вUser
? Если нет, как мне изменить схему?