私のDjangoサイトには、通常のユーザー用(MyUserProfile
)と従業員用の拡張ユーザー用(EmployeeUserProfile
)の2種類のユーザープロファイルがあります。 models.py
:更新後のプロファイルモデルの保存:IntegrityError(重複したuser_idキー)
class MyUserProfile(models.Model):
user = models.OneToOneField('auth.user', related_name='userprofile')
www = models.URLField(null=True, blank=True, verbose_name='website')
affiliation = models.CharField(max_length=200,null=True,blank=True)
...
class EmployeeUserProfile(MyUserProfile):
start_date = models.DateField()
current = models.BooleanField(default=True)
...
私は従業員のためのプロファイル更新フォームの実装に問題があります。私はIntegrityError
を取得し、既に作成したプロファイルを更新するための「提出」で
from django.template import RequestContext
from .forms import EmployeeUserProfileForm
def update_profile(request):
if request.method == 'POST':
form = EmployeeUserProfileForm(request.POST)
if form.is_valid():
profile = form.save(commit=False)
profile.user = request.user
profile.save()
else:
user = request.user
profile = user.userprofile.employeeuserprofile
form = EmployeeUserProfileForm(instance=profile)
c = {'form': form}
return render_to_response('pages/profile/update.html', c,
context_instance=RequestContext(request))
:私はプロファイルを更新に来たときに
from django.forms import ModelForm
from .models import EmployeeUserProfile
class EmployeeUserProfileForm(ModelForm):
class Meta:
model = EmployeeUserProfile
exclude = ['user', 'current']
しかし、私はこのようにフォーム(forms.py
)を作成します。たとえば、(1062, "Duplicate entry '2' for key 'user_id'")
です。どうやら、Djangoは既存のものを更新するのではなく、ユーザーのコピーを追加しようとしています。
私は間違っていますか?
Doh!今私は愚かな気がする。ありがとうございました。それは間違っていました。 (私は 'login_required'を持っています)。 – xnx
喜んでそれ..すべての学習経験の一部:) – karthikr