是这样的,我按照[官方的的指南]
https://docs.djangoproject.com/en/1.6/topics/auth/customizing/#extending-the-existing-user-model ,
想建一个用户个人信息设置页面,用户可以设置自己的网站名称,
首先我在
models.py 里面用 OneToOneField 拓展原来的 User:
class UserProfile(models.Model):
user = models.OneToOneField(User)
website = models.URLField(blank=True)
def __unicode__(self):
return "%s's profile" % self.user
然后呢我用 ModelForm :
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('website')
然后我在
views.py 里面
def settings(request):
if request.method == 'POST':
form = UserProfileForm(
request.POST)
user_profile = form.save()
return HttpResponseRedirect("/")
else:
form = UserProfileForm()
return render(request, "settings.html", {'form': form, })
但是问题是那个 form.save() 时只包含了 website 这一项,并没有把user的其他东西存入
UserProfile 中,
所以用户设置填写好以后提交表单后,会显示 "Column 'user_id' cannot be null" 因为它并没有继承原来的user的信息。
所以我该如何做好呢?不知道我有没有说清楚,新人求教...
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/126761
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.