Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 25, 2010 11:33:46

Чел_вТапКах
От:
Зарегистрирован: 2009-07-22
Сообщения: 92
Репутация: +  0  -
Профиль   Отправить e-mail  

добавление Полей в Джанговского Usera

Встал вопрос о добавление новых полей во встроенную модель User. прочитал Расширение модели пользователя через наследование и сразу столкнулся с тем что когда мы делаем sycdb в первый раз, то пользователь сохраняется в стандартном классе, а не переопределенном. Добавил возможность заходить и под стандартным Userom. Вроде и заходить стало, но вот в Админке исчезли группы и пользователи(вроде бы даже это немного логично). Не логично то , что когда я делаю в админке добавить usera в унаследованном классе выходит форма редактирования(для стандартного usera)+ мои поля, а не форма где есть тока логин пароль и подтверждение. И в связи с этим у меня пароль сохраняется в базу как просто число а не MD5 … меня это мягко говоря не совсем устраивает. Помогите пожалуйста решить проблему….



Офлайн

#2 Фев. 25, 2010 13:42:27

aliens
От:
Зарегистрирован: 2007-08-14
Сообщения: 135
Репутация: +  1  -
Профиль   Отправить e-mail  

добавление Полей в Джанговского Usera

А почему не использовать Profile к юзеру?



Офлайн

#3 Фев. 25, 2010 14:06:41

Чел_вТапКах
От:
Зарегистрирован: 2009-07-22
Сообщения: 92
Репутация: +  0  -
Профиль   Отправить e-mail  

добавление Полей в Джанговского Usera

Потому что мне кажется это более верный путь, и данный механизм может пригодиться в дальнейшем! Ато бы давно МанкиПатчинг заюзал……



Офлайн

#4 Фев. 25, 2010 16:24:09

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

добавление Полей в Джанговского Usera

В качестве кувалды можно применить это http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_urls то есть прописать свой admin view и втолкнуть его в ModelAdmin.get_urls. Ну а внутри сделать как оно надо.



Офлайн

#5 Фев. 25, 2010 16:53:18

Чел_вТапКах
От:
Зарегистрирован: 2009-07-22
Сообщения: 92
Репутация: +  0  -
Профиль   Отправить e-mail  

добавление Полей в Джанговского Usera

а вам не кажется слишком мажорно писать свой admin view? а ссылочку почитаю, спасибо!



Офлайн

#6 Фев. 26, 2010 04:00:36

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

добавление Полей в Джанговского Usera

Потому что мне кажется это более верный путь…
Ну, вроде бы доки советуют все таки создавать новый класс с привязкой к стандартному класу Юзера.
Я вот тоже сейчас над этим бился. Создал UserProfile… создал обработчик сигнала django.db.models.signals.post_save от Юзера и все ок.
А наследовать - это конечно красиво, но фиг его знает, как оно там сработает…
+ остальные приложения могут не понять такого подхода.



Отредактировано (Фев. 26, 2010 04:00:52)

Офлайн

#7 Март 1, 2010 14:19:04

Чел_вТапКах
От:
Зарегистрирован: 2009-07-22
Сообщения: 92
Репутация: +  0  -
Профиль   Отправить e-mail  

добавление Полей в Джанговского Usera

вот видимо я с этим как раз и столкнулся………. Ладно завтра попробую профайл все таки прикрутить….а про обработчик сигнала django.db.models.signals.post_save можете поподробнее рассказать??



Офлайн

#8 Март 1, 2010 14:46:28

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

добавление Полей в Джанговского Usera

могу)) я делал так:
в 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)



Офлайн

#9 Март 9, 2010 12:12:59

Чел_вТапКах
От:
Зарегистрирован: 2009-07-22
Сообщения: 92
Репутация: +  0  -
Профиль   Отправить e-mail  

добавление Полей в Джанговского Usera

Здесьговорится все таки о том , что лучше наследовать!!! с профайлом получилось практически, просто в конце стало лень вытаскивать профайл юзера в одельную модель в корень!
Так что первый мой вопрос по прежнему актуален!
и если делать изменить пароль для кастом юзера, то выходит ошибка

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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version