1
我的Django站點有兩種用戶配置文件,一種用於普通用戶(MyUserProfile
),另一種用於員工(EmployeeUserProfile
)。 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)
...
我在爲員工實施配置文件更新表單時遇到問題。我創建這樣的形式(forms.py
):
from django.forms import ModelForm
from .models import EmployeeUserProfile
class EmployeeUserProfileForm(ModelForm):
class Meta:
model = EmployeeUserProfile
exclude = ['user', 'current']
但是,當我來到更新配置文件:
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))
「提交」更新已創建的配置文件,我得到一個IntegrityError
。例如,(1062, "Duplicate entry '2' for key 'user_id'")
。顯然,Django正在嘗試添加用戶的副本,而不是更新現有的副本。
我在做什麼錯?
Doh!我現在感到很蠢。謝謝 - 那是錯的。 (我有'login_required')。 – xnx
很高興幫助..所有的學習經驗的一部分:) – karthikr