Форум сайта python.su
Встал вопрос о добавление новых полей во встроенную модель User. прочитал Расширение модели пользователя через наследование и сразу столкнулся с тем что когда мы делаем sycdb в первый раз, то пользователь сохраняется в стандартном классе, а не переопределенном. Добавил возможность заходить и под стандартным Userom. Вроде и заходить стало, но вот в Админке исчезли группы и пользователи(вроде бы даже это немного логично). Не логично то , что когда я делаю в админке добавить usera в унаследованном классе выходит форма редактирования(для стандартного usera)+ мои поля, а не форма где есть тока логин пароль и подтверждение. И в связи с этим у меня пароль сохраняется в базу как просто число а не MD5 … меня это мягко говоря не совсем устраивает. Помогите пожалуйста решить проблему….
Офлайн
А почему не использовать Profile к юзеру?
Офлайн
Потому что мне кажется это более верный путь, и данный механизм может пригодиться в дальнейшем! Ато бы давно МанкиПатчинг заюзал……
Офлайн
В качестве кувалды можно применить это http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_urls то есть прописать свой admin view и втолкнуть его в ModelAdmin.get_urls. Ну а внутри сделать как оно надо.
Офлайн
а вам не кажется слишком мажорно писать свой admin view? а ссылочку почитаю, спасибо!
Офлайн
Потому что мне кажется это более верный путь…Ну, вроде бы доки советуют все таки создавать новый класс с привязкой к стандартному класу Юзера.
Отредактировано (Фев. 26, 2010 04:00:52)
Офлайн
вот видимо я с этим как раз и столкнулся………. Ладно завтра попробую профайл все таки прикрутить….а про обработчик сигнала django.db.models.signals.post_save можете поподробнее рассказать??
Офлайн
могу)) я делал так:
в models.py после определения класа UserProfile отслеживаем сигнал после сохранения модели User и если она только-только создана (а не просто сохранена), то создаем для этого экземпляра User экземпляр UserProfile. Вот и все…
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
icq = models.CharField(blank=True, max_length=15)
phone = models.CharField(blank=True, max_length=25)
address = models.TextField(blank=True)
def user_post_save(created, instance, **kwags):
if created:
UserProfile(user=instance).save()
models.signals.post_save.connect(user_post_save, sender=User)
Офлайн
Здесьговорится все таки о том , что лучше наследовать!!! с профайлом получилось практически, просто в конце стало лень вытаскивать профайл юзера в одельную модель в корень!
Так что первый мой вопрос по прежнему актуален!
и если делать изменить пароль для кастом юзера, то выходит ошибка
Warning at /admin/base/customuser/2/password/
Truncated incorrect DOUBLE value: '2/password'
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/base/customuser/2/password/
Exception Type: Warning
Exception Value:
Truncated incorrect DOUBLE value: '2/password'
Отредактировано (Март 9, 2010 12:18:47)
Офлайн