2015-05-05 2 views
0

Я, наверное, вырывался из-за того, что здесь я не вижу проблемы, и я уверен, что это нечто тривиальное.Django save form с внешним ключом пользователя

У меня есть модель, модель которой является профилем (профиль является пользователем через многие формы на сайте, работает нормально). В этой конкретной форме я использую только одно поле. Когда я пытаюсь сохранить его, он ломается: значение null в столбце «user_id» нарушает непустое ограничение. Пользователь является внешним ключом в модели профиля.

У меня есть аналогичные формы/виды, которые работают только в одном поле из модели профиля и сохраняют на них все хорошо. Я сравниваю код, и я просто не вижу разницы. Как я уже сказал, я, вероятно, немного сгорел.

Это моя форма:

class CompleteRegistration(forms.ModelForm): 
    class Meta: 
     model = Profile 
     fields = ('resume',) 

Это мнение:

def complete_registration(request): 
    if request.method == "POST": 
     form = CompleteRegistration(request.POST) 
     if form.is_valid(): 
      form.save() 
      return redirect(request.GET.get('next', '')) 
    else: 
     form = CompleteRegistration() 

    context = { 
     'form': form 
    } 

    return render_to_response('accounts/complete_registration.html', context, RequestContext(request)) 

Это должно быть очень простой, но я, очевидно, что-то отсутствует. Модель профиля также имеет поле uuid. Он существует в неудачной строке, что делает меня еще более озадаченным. Почему существует uuid и нет пользователя? Есть идеи? Может быть, потому, что экземпляр пользователя в представлении на самом деле является SimpleLazyObject?

ответ

1

Номер экземпляра Profile отсутствует в форме. Вы должны передать его как параметр instance, иначе форма пытается создать новый экземпляр (который не имеет user_id).

+0

Вы имеете в виду в ветке else, вот так? 'form = CompleteRegistration (instance = request.user.get_profile())' - потому что это тоже не работает; У меня такая же проблема. – dnmh

+1

И в 'if request.method == 'POST':' и 'else:' ветке. – knbk

+0

Я добавил это в ветку if: 'form = CompleteRegistration (request.POST, instance = request.user.get_profile())' - он больше не сломается, все идет хорошо. Однако резюме (FieldFile) не сохраняется. Это вообще другая проблема или это связано с этим? Благодарю. – dnmh

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