一些背景,我一直在为我们的Django数据库系统设计用户配置文件,并且目前正在尝试创建一个视图页面,以允许用户编辑其帐户设置(在管理页面之外)。我已经搜索了许多来源,其中大多数建议使用.get_profile(),但无论我采用什么方法都无法使其在我的程序中工作(据我所知和研究)。到目前为止,我已经使用django主页上的.get_profile()来查看如何正确使用.get_profile()并找到了AUTH_PROFILE_MODULE设置(稍后我将指定我的设置)。
使用这个网站:http://www.turnkeylinux.org/blog/django-profile我发现了一些其他使用.get_profile()的方法,但仍然没有任何作用。(我不会添加我尝试过的其余链接,因为我可以继续很长时间)
回到问题,有人可以推荐一种方法,使我可以获取用户信息以设置一些默认值来维护他们当前的设置,如果他们选择不编辑它们并只更新具有新提交值的设置。
到目前为止,我已经做到了:(希望所有相关部分)
文件目录: 〜/文档/项目1
文件位置: project1/accounts
目前的代码中,我放弃了使用.get_profile()方法,而是通过查询可用账户,直到找到匹配的userLink,然后将其保存到变量"userSettings"中。我采取的方法是使用此变量作为userSettings.gender、userSettings.birthdate等来访问每个用户的设置,并在更新时更改它们,如果不需要则设置为以前的值(使用一系列if语句或一些内置的Django函数)。我不确定这是否是最有效的方法,或者我应该恢复使用get_profile()方法。当我使用get_profile()方法(如当前注释掉的行所示)时,我遇到了以下错误:无法将“用户”关键字解析为字段。选项为:birthdate、gender、id、userLink。
我还尝试了一种新的方法,使用"user"定义userLink作为新数据库的匹配项,以符合django.docs网站的规定,但仍然出现了有关帐户不存在的错误。 我尝试从https://bitbucket.org/filmaster/filmaster-test/src/1618b18003ed/film20/userprofile/views.py中创建了一个try和except的方法来处理此错误,但这也没有产生任何积极的结果。
我已经想不出如何使.get_profile()正常工作,并且无法想到任何方式让我访问存储的用户信息,以便他们可以通过表单进行编辑。 我不确定自己如何正确利用它,感觉自己正在打转。 如果有人能帮助我解决这个问题,我将不胜感激。 我尽可能提供了尽可能多的相关信息,但如果您需要其他信息来帮助我,请告诉我,我会尽快包含它。
提前致谢!
使用这个网站:http://www.turnkeylinux.org/blog/django-profile我发现了一些其他使用.get_profile()的方法,但仍然没有任何作用。(我不会添加我尝试过的其余链接,因为我可以继续很长时间)
回到问题,有人可以推荐一种方法,使我可以获取用户信息以设置一些默认值来维护他们当前的设置,如果他们选择不编辑它们并只更新具有新提交值的设置。
到目前为止,我已经做到了:(希望所有相关部分)
文件目录: 〜/文档/项目1
settings.py
AUTH_PROFILE_MODULE = "accounts.Account"
文件位置: project1/accounts
models.py
# additional model to incorporate our custom fields to the auth user model
class Account(models.Model):
userLink = models.OneToOneField(User) #link (pointer) to the users other information in User model
birthdate = models.DateField(blank = True) # True makes this field optional
gender = models.CharField(max_length = 1, choices = GENDER_CHOICE, null = True)
def __unicode__(self): # define a unicode for the user to access
return u'%s %s' % (self.userLink.first_name, self.userLink.last_name) # return first and last name
# custom Form to change user account information (can't be a modelForm)
class EditAccountForm(forms.Form):
gender = forms.CharField(max_length = 1)#, choices = GENDER_CHOICE, null = True)
birthdate = forms.DateField(widget = SelectDateWidget()) # True makes this field optional
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
views.py
# Account settings view
@login_required
def AccountSettings(request):
sluggedSettingError = request.GET.get('error', '') # error message with slugged character
settingError = sluggedSettingError.replace('-', ' ')
settingForm = AdditionalForm(request.POST or None) # variable is called in edit_user.html
# might want to have some way to create a new profile if the account doesn't exist
userSettings = Account.objects.filter(userLink=request.user)
# userSettings = request.user.get_profile() # returns the current settings of the users profile
#### Currently trying to get it to let me use get_profile() ########
print "userLink = %s" % userSettings#.user
# print "Gender = %s" % userSettings.gender # testing print
if request.method == 'POST':
# if settingForm.is_valid():
# settingForm.save();
return HttpResponseRedirect('/')
return render_to_response("user_settings.html", {'settingForm': settingForm, 'settingError': settingError}, context_instance = RequestContext(request))
# gender = request.POST['gender'] # pass in the gender variable from post
# birthdate = request.POST['birthdate'] # pass in the birthdate from post
目前的代码中,我放弃了使用.get_profile()方法,而是通过查询可用账户,直到找到匹配的userLink,然后将其保存到变量"userSettings"中。我采取的方法是使用此变量作为userSettings.gender、userSettings.birthdate等来访问每个用户的设置,并在更新时更改它们,如果不需要则设置为以前的值(使用一系列if语句或一些内置的Django函数)。我不确定这是否是最有效的方法,或者我应该恢复使用get_profile()方法。当我使用get_profile()方法(如当前注释掉的行所示)时,我遇到了以下错误:无法将“用户”关键字解析为字段。选项为:birthdate、gender、id、userLink。
我还尝试了一种新的方法,使用"user"定义userLink作为新数据库的匹配项,以符合django.docs网站的规定,但仍然出现了有关帐户不存在的错误。 我尝试从https://bitbucket.org/filmaster/filmaster-test/src/1618b18003ed/film20/userprofile/views.py中创建了一个try和except的方法来处理此错误,但这也没有产生任何积极的结果。
我已经想不出如何使.get_profile()正常工作,并且无法想到任何方式让我访问存储的用户信息,以便他们可以通过表单进行编辑。 我不确定自己如何正确利用它,感觉自己正在打转。 如果有人能帮助我解决这个问题,我将不胜感激。 我尽可能提供了尽可能多的相关信息,但如果您需要其他信息来帮助我,请告诉我,我会尽快包含它。
提前致谢!