【发布时间】:2014-02-14 21:27:23
【问题描述】:
迈出django's (1.5) auth 功能的第一步,到目前为止遇到了很多麻烦,只是尝试将用户的电子邮件地址(这是用户模型中的用户名字段)作为ForeignKey 在配置文件模型中拉入@ 987654323@。
两个问题:
- 这是当前外键的最佳实践方式吗 配置文件模型中的用户详细信息?请注意,我不是要保存 新用户,只需将他们的个人资料详细信息关联回他们的 经过身份验证的用户对象 (CustomUser)。当用户到达 下面的视图,它们已经通过了身份验证。
- 需要对以下内容进行哪些更改才能使其正常工作 应该吗?
注意,在走到这一步之前,我遇到了几个user_id 不能为空或必须是 CustomUser 对象的实例错误,我现在什么也没看到一旦我被重定向到/profile/,就会被保存在数据库中。
# view
@login_required
def profile_setup_specialist(request):
if request.method == 'POST':
current_user = CustomUser.objects.get(email = request.user.email)
posted_form = SpecialistCreationForm(request.POST, instance=current_user)
if posted_form.is_valid():
profile = posted_form.save(commit=False)
profile.user = current_user
profile.save()
return HttpResponseRedirect('/profile/')
# ..
# profile model
class Specialist(models.Model):
user = models.ForeignKey(CustomUser, related_name='Specialist')
foo = models.CharField(max_length=100)
# ...
def __unicode__(self):
return self.foo
# form
class SpecialistCreationForm(forms.ModelForm):
class Meta:
model = Specialist
exclude = ['user']
# custom user model
class CustomUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(
verbose_name='email address',
max_length=255,
unique=True,
db_index=True,
)
# ..
objects = CustomUserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['first_name', 'last_name', 'state']
def __unicode__(self):
return self.email
【问题讨论】:
标签: django foreign-keys models user-profile