2012-02-16 3 views
0

У меня есть представление Django, которое должно сохранить CalendarEvent (экземпляр модели) с тремя установленными полями, включая профиль профиля текущего пользователя. Взгляды защищены @login_required, и я вошел в системе как суперпользователь, то называется вид получает ошибку:Как я могу сохранить нулевой идентификатор пользователя в представлении Django?

/Users/jonathan/pim/../pim/pim_calendar/views.py in save_calendar 
      date_padding = '' 
     regexp = weekday + ' ' + month + ' ' + date_padding + date + \ 
      ' ..:..:.. ... ' + year 
     event = pim_calendar.models.CalendarEvent() 
     event.when = regexp 
     event.description = description 
     event.user = request.user.get_profile() 
     event.save() 

в TRACEBACK. (Request.user должен быть мне войти в систему как суперпользователь.)

Ошибка я получаю:

IntegrityError at /save_calendar 
pim_calendar_calendarevent.userprofile_id may not be NULL 
Request Method: POST 
Request URL: http://localhost:8000/save_calendar 
Django Version: 1.3.1 
Exception Type: IntegrityError 
Exception Value:  
pim_calendar_calendarevent.userprofile_id may not be NULL 
Exception Location: /usr/local/Cellar/python/2.7/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py in execute, line 234 
Python Executable: /usr/local/bin/python 
Python Version: 2.7.0 
Python Path:  
['/Users/jonathan/pim', 
'/usr/local/Cellar/python/2.7/lib/python2.7/site-packages/distribute-0.6.14-py2.7.egg', 
'/usr/local/Cellar/python/2.7/lib/python2.7/site-packages/pip-0.8.1-py2.7.egg', 
'/usr/local/Cellar/python/2.7/lib/python27.zip', 
'/usr/local/Cellar/python/2.7/lib/python2.7', 
'/usr/local/Cellar/python/2.7/lib/python2.7/plat-darwin', 
'/usr/local/Cellar/python/2.7/lib/python2.7/plat-mac', 
'/usr/local/Cellar/python/2.7/lib/python2.7/plat-mac/lib-scriptpackages', 
'/usr/local/Cellar/python/2.7/lib/python2.7/lib-tk', 
'/usr/local/Cellar/python/2.7/lib/python2.7/lib-old', 
'/usr/local/Cellar/python/2.7/lib/python2.7/lib-dynload', 
'/usr/local/Cellar/python/2.7/lib/python2.7/site-packages', 
'/usr/local/Cellar/python/2.7/lib/python2.7/site-packages/PIL', 
'/usr/local/lib/python2.7/site-packages', 
'/usr/local/Cellar/python/2.7/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info'] 
Server time: Thu, 16 Feb 2012 15:00:21 -0600 

Если добавить перед event.save (вызов),

 print repr(event.user) 

Консольные дисплеи, "" "< UserProfile: объект UserProfile >" "" перед сбоем IntegrityError.

Любые предложения?

ответ

3

Из сообщения об ошибке это выглядит как вместо:

event.user = request.user.get_profile() 

Вы должны называть это:

event.userprofile = request.user.get_profile() 
0

В дополнение к тому, что @jkbr сказал, вы могли бы хотеть рассмотреть не спасая UserProfile в объекте CalendarEvent. Вместо этого просто сохраните пользователя, связанного с CalendarEvent, затем войдите в UserProfile:

Смежные вопросы