私はユーザーのテーブルをプロファイルテーブルで拡張しましたが、ユーザーサイトの登録はユーザータイプ "customer"の電子メールとパスワードのみを要求し、ユーザータイプ "promotor"出身、住所、国、都道府県、市などのような他のフィールドも必要です。ログイン後、アカウント設定ページに行くと、両方のタイプのアカウント設定ページが同じです。そのため、アカウント設定で作成した単一のジャンゴ形式。ユーザーはdjango形式のプロフィールを持っていません
class userAccountSettingsForm(forms.Form):
email = forms.EmailField(required = True, max_length=50, widget=forms.EmailInput(attrs={
'class' : 'custome-input promote-input',
'autocomplete' : 'off',
'data-empty-message' : 'Please enter a email.',
'data-error-message' : 'Please enter a valid email.',
'readonly' : 'readonly'
}))
firstname = forms.CharField(required = True, max_length=50, widget=forms.TextInput(attrs={
'class' : 'custome-input promote-input',
'autocomplete' : 'off',
'data-empty-message':'Please enter first name.'
}))
lastname = forms.CharField(required = True, max_length=50, widget=forms.TextInput(attrs={
'class' : 'custome-input promote-input',
'autocomplete' : 'off',
'data-empty-message':'Please enter last name.'
}))
dob = forms.DateField(required = False, widget=forms.DateInput(attrs={
'class' : 'custome-input promote-input',
'id' : 'custom-datepicker',
'autocomplete' : 'off',
'readonly':'readonly'
}))
phone = forms.IntegerField(required = True, widget=forms.TextInput(attrs={
'class' : 'custome-input promote-input',
'autocomplete' : 'off',
'data-empty-message':'Please enter mobile number.'
}))
address = forms.CharField(required = False, max_length=225, widget=forms.TextInput(attrs={
'class' : 'custome-input promote-input',
'autocomplete' : 'off'
}))
subscription = forms.BooleanField(required = False)
事プロモーターの登録中に、それはまた、プロファイルテーブルでその行を作成し、顧客の登録中にそれだけで、ユーザーテーブルの行を作成することで、アカウント設定ページで、私はからユーザーのデータを見つけるために持っている理由厥ので、
dobForm=""
if my_details.profile.dob:
dobForm = datetime.strptime(str(my_details.profile.dob), '%Y-%m-%d').strftime('%m/%d/%Y')
settingsForm = userAccountSettingsForm(
initial={
'email': my_details.email,
'firstname': my_details.first_name,
'lastname': my_details.last_name,
'dob': dobForm,
'phone':my_details.profile.phone_number,
'address':my_details.profile.address,
'subscription':my_details.profile.subscription,
}
)
だから、ユーザーのすべての既存のデータをフェッチこのページを使用して、そうでないユーザー型プロモーターの場合には - :モデル、私はビューでDjangoのフォームの助けを借りてこれをやっているが、ここでは、ビューの私のコードです登録時にプロファイルテーブルのプロモータ用に生成された行がすでに存在するため問題は発生しますが、顧客の場合はrを生成しませんOW登録、この場合には、それがエラーを与えながら、プロファイルテーブルの顧客のために: -
RelatedObjectDoesNotExist at /home/account-settings
User has no profile
以外にも、顧客の登録一方、プロファイルテーブルに行を作成するから、この問題の他の解決策はありますか?
この場合の解決方法はありますか? –
この 'if my_details.profile.dob:'を 'hasattr(my_details、 'profile')'に変更してみてください。 – Sagar