Найти - Пользователи
Полная версия: Расширение модели User
Начало » Django » Расширение модели User
1 2 3
sv0
Пытаюсь расширить модель User способом ‘monkey patching’.
Нужно добавить дополнительные поля gender, city, country.
В файле models.py добавляю:
User.add_to_class('gender', models.CharField(max_length=1, choices=GENDER_CHOICES))
# и для отображения и возможности редактирования полей в админке:
User._meta.admin.fields += (
('Additional', {'fields': ('gender',)}),
)
User._meta.admin.list_display += ('gender', )
Добавление полей в админке приводит к ошибке:
 File "/home/sv/django/wap/../../models.py", line 155, in <module>
User._meta.admin.fields += (
AttributeError: 'NoneType' object has no attribute 'fields'
команда ‘dir(User._meta.admin)’ в python console так же показывает, что поля fields у admin нет:
>>> from django.db import models
>>> from django.contrib.auth.models import User
>>> dir(User._meta.admin)
['__class__', '__delattr__', '__doc__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__']
>>>
На нескольких блогах(посты за февраль-май 2008) читал, что возможно добавить поля модели User в админку этим способом. Но у меня не получаеться. Подскажите плз, может за год что-то поменялось?

з.ы.
Python 2.5.2
django.VERSION = (1, 1, 0, ‘beta’, 1)
Александр Кошелев
sv0
На нескольких блогах(посты за февраль-май 2008) читал, что возможно добавить поля модели User в админку этим способом. Но у меня не получаеться. Подскажите плз, может за год что-то поменялось?
Да. Админка теперь настраивается совершенно в другом месте и жестко не связана с моделью. Смотрите документацию.

Манки-патчинг зло!
slav0nic
лучше сделайте профиль и свяжите его с User через AutoOnetoOneField (находится в гугле:])
PyKaB
Озадачился примерно тем же вопросом. Частая ситуация - надо расширить модель User.
Делаю апп и модель, допустим, profile.Profile.
Теперь я очевидно хочу по многим причинам чтобы была возможность редактировать в админке Profile и сразу видеть стандартные поля User.
Создаю в файле admin.py в моем аппе что-то вроде
class UserInline(admin.StackedInline):
model = User

class ProfileAdmin(admin.ModelAdmin):
inlines = [
UserInline,
]

admin.site.register(Profile, ProfileAdmin)
Получаю
Request Method:  	GET
Request URL: http://localhost:8000/admin/profile/profile/add/
Exception Type: Exception
Exception Value:

<class 'django.contrib.auth.models.User'> has no ForeignKey to <class 'profile.models.Profile'>

Exception Location: C:\Program Files\Python25\lib\site-packages\django\forms\models.py in _get_foreign_key, line 806
Зачем моделе User иметь ForeigenKey на Profile не понятно, наоборот ключ есть…
PyKaB
Сегодня вернулся к этому вопросу. Создал свою простейющую модель User2, которой заменил User - все заработало…
Но вопрос остался - как сделать добавление\редактирование User в другой моделе?
Ferroman
А расширить стандартного юзера с использованием AUTH_PROFILE_MODULE почему не подходит?
LestatCheb
Ferroman
А расширить стандартного юзера с использованием AUTH_PROFILE_MODULE почему не подходит?
подскажите пожалуйста свой метод,
весь день бьюсь над расширением юзера,
никак не получается….
везде видимо старые варианты,
django.VERSION = (1, 1, 0, ‘beta’, 1) видимо не работают :((

заранее спасибо!
Ferroman
Последний абзац
LestatCheb
Ferroman
Последний абзац
спасибо,
попробую…

а такое у кого-нибудь заработало?
http://www.codekoala.com/blog/2009/quick-django-tip-user-profiles/
Ferroman
А что, не работает?
Насамом деле профит от такого трюка сомнительный. Если вызовы get_profile() засовывать в в обработчики исключений то проблем не будет.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB