Всем здравствуйте!
Делаю свои профили пользователей.
Приложение user_profile.
Имеется код:
#models.py
from django.db import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OneToOneField(User)
bio = models.CharField(max_length=100)
def create_user_profile(sender, **kwargs):
if kwargs['created']:
UserProfile.objects.create(user=kwargs['instance'])
models.signals.post_save.connect(create_user_profile, sender=User)
В settings.py добавил
AUTH_PROFILE_MODULE = 'user_profile.UserProfile'
Далее файл админ выглядит так:
#admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from models import UserProfile
from admin_forms import UserProfileForm
class UserProfileAdmin(UserAdmin):
fieldsets = (
(None, {
'fields': ('username',)
}),
)
form = UserProfileForm
admin.site.unregister(User)
admin.site.register(UserProfile, UserProfileAdmin)
файл формы:
#admin_forms.py
from django import forms
from django.utils.translation import ugettext_lazy as _
from models import UserProfile
class UserProfileForm(forms.ModelForm):
username = forms.RegexField(label=_("Username"), max_length=30, regex=r'^[\w.@+-]+$',
help_text = _("Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."),
error_messages = {'invalid': _("only letters, numbers and @/./+/-/_characters.")})
class Meta:
model = UserProfile
def __init__(self, *args, **kwargs):
super(UserProfileForm, self).__init__(*args, **kwargs)
f = self.fields.get('user_permissions', None)
if f is not None:
f.queryset = f.queryset.select_related('content_type')
django ругается:
ImproperlyConfigured at /
'UserProfileAdmin.filter_horizontal' refers to field 'user_permissions' that is missing from model 'UserProfile'.
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 1.3
Python Version: 2.7.1
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'user_profile']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.csrf.CsrfResponseMiddleware')
Traceback:
File "C:\Documents and Settings\admin\Application Data\Python2.7.1\lib\site-packages\django\core\handlers\base.py" in get_response
101. request.path_info)
File "C:\Documents and Settings\admin\Application Data\Python2.7.1\lib\site-packages\django\core\urlresolvers.py" in resolve
250. for pattern in self.url_patterns:
File "C:\Documents and Settings\admin\Application Data\Python2.7.1\lib\site-packages\django\core\urlresolvers.py" in _get_url_patterns
279. patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "C:\Documents and Settings\admin\Application Data\Python2.7.1\lib\site-packages\django\core\urlresolvers.py" in _get_urlconf_module
274. self._urlconf_module = import_module(self.urlconf_name)
File "C:\Documents and Settings\admin\Application Data\Python2.7.1\lib\site-packages\django\utils\importlib.py" in import_module
35. __import__(name)
File "C:\Documents and Settings\admin\Application Data\exchange\..\exchange\urls.py" in
5. admin.autodiscover()
File "C:\Documents and Settings\admin\Application Data\Python2.7.1\lib\site-packages\django\contrib\admin\__init__.py" in autodiscover
26. import_module('%s.admin' % app)
File "C:\Documents and Settings\admin\Application Data\Python2.7.1\lib\site-packages\django\utils\importlib.py" in import_module
35. __import__(name)
File "C:\Documents and Settings\admin\Application Data\exchange\user_profile\admin.py" in
17. admin.site.register(UserProfile, UserProfileAdmin)
File "C:\Documents and Settings\admin\Application Data\Python2.7.1\lib\site-packages\django\contrib\admin\sites.py" in register
97. validate(admin_class, model)
File "C:\Documents and Settings\admin\Application Data\Python2.7.1\lib\site-packages\django\contrib\admin\validation.py" in validate
24. validate_base(cls, model)
File "C:\Documents and Settings\admin\Application Data\Python2.7.1\lib\site-packages\django\contrib\admin\validation.py" in validate_base
307. f = get_field(cls, model, opts, 'filter_horizontal', field)
File "C:\Documents and Settings\admin\Application Data\Python2.7.1\lib\site-packages\django\contrib\admin\validation.py" in get_field
354. % (cls.__name__, label, field, model.__name__))
Exception Type: ImproperlyConfigured at /
Exception Value: 'UserProfileAdmin.filter_horizontal' refers to field 'user_permissions' that is missing from model 'UserProfile'.
Понятно, что не может найти поле user_permissions в UserProfile. Потому что поле это у User. А почему он ищет это поле в UserProfile и где это можно поменять? Или ошибка в другом? Помогите пожалуйста.