У меня есть форма регистрации, когда пользователь вводит в нее действительные регистрационные данные, он регистрирует пользователя и перенаправляет пользователя в другую форму для ввода дополнительных данных. Эта новая форма содержит больше данных о пользователе и создана с использованием класса ModelForm ниже:
class UserProfileAddForm(ModelForm):
class Meta:
model = UserProfile
exclude = ('user')
и модель UserProfile выглядит следующим образом:
class UserProfile(models.Model):
GRADE_YEAR_CHOICES = (
('FR', 'Freshman'),
('SO', 'Sophomore'),
('JR', 'Junior'),
('SR', 'Senior'),
('GR', 'Graduate')
)
school = models.CharField(max_length=64)
grade_year = models.CharField(max_length=2, choices=GRADE_YEAR_CHOICES)
gpa = models.DecimalField(decimal_places=2, max_digits=6, blank=True, null=True)
user = models.ForeignKey(User, unique=True)
Где поле пользователя - это ForeignKey для объекта User в Django. У меня проблемы с настройкой пользовательского поля для пользователя, который делает запрос. Вот что я попробовал в моей views.py
Первая попытка:
def more(request):
if request.method == 'POST':
form = UserProfileAddForm(request.POST)
if form.is_valid():
form.save(commit=False)
form.user = request.user
form.save()
return HttpResponseRedirect('/register/success/')
else:
form = UserProfileAddForm()
variables = RequestContext(request, {
'form': form
Вторая попытка:
def more(request):
if request.method == 'POST':
form = UserProfileAddForm(request.POST)
if form.is_valid():
form.save(commit=False)
form.user = User.objects.filter(username=request.user)
form.save()
return HttpResponseRedirect('/register/success/')
else:
form = UserProfileAddForm()
variables = RequestContext(request, {
'form': form
})
return render_to_response('registration/more.html', variables)
В любом случае я не пытаюсь сохранить данные в базе данных. Однако он перенаправит меня на страницу успеха, как будто он успешно сохранил.