いくつかの背景として、私は Django データベース システムのユーザー プロファイルを設計しており、現在、ユーザーが自分のアカウント設定を編集できるようにするビュー ページを作成しようとしています (管理ページの外部)。私は多数の情報源を検索しましたが、そのほとんどは .get_profile() の使用を推奨していますが、これは私のプログラムではどのようなアプローチを試みても機能しませんでした (私の知る限り、調査を行った結果)。これまでのところ、.get_profile() の django メイン ページを使用して .get_profile() を適切に使用する方法を確認し、AUTH_PROFILE_MODULE 設定を見つけました (設定については後で説明します)。
このサイトを使用:
http://www.turnkeylinux.org/blog/django-profile .get_profile() を使用する他の方法をいくつか見つけましたが、まだ何も機能していません。(残りのリンクは追加しません。
質問に戻ると、ユーザー情報を取得して現在の設定を維持するためのデフォルト値を設定できる方法を誰かが推奨できますか?
これまでのところ、私は持っています:(うまくいけば、関連するすべての部分)
ファイルディレクトリ: ~/Documents/project1
設定.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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ビュー.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() を使用していたとき (コメント アウトされた行に現在入力されているため)、次のエラーが発生しました。キーワード 'user' をフィールドに解決できません。選択肢は次のとおりです: 生年月日、性別、ID、userLink
また、代わりに「user」として定義されたuserLinkを使用して新しいデータベースでこのアプローチを試み、django.docs Webサイトが指定したものと一致させましたが、まだアカウントが存在しないというエラーが発生しました。このエラーを処理するためにhttps://bitbucket.org/filmmaster/filmmaster-test/src/1618b18003ed/film20/userprofile/views.pyからtry: and except: アプローチを作成しようとしました が、これも肯定的な結果は得られませんでした。
.get_profile() を機能させる方法についてのアイデアがありません。ユーザーが保存した情報にアクセスして、ユーザーがフォームで編集できるようにする方法は考えられません。この時点では、それを適切に使用する方法を理解しているかどうかわからず、この時点でただぐるぐる回っているように感じます. 誰かがこれで私を助けることができれば、私はそれを感謝します. できるだけ多くの関連情報を提供しようとしましたが、他に何か助けが必要な場合はお知らせください。できるだけ早く含めるようにします.
前もって感謝します!