Django sitemde iki kullanıcı profili vardır: biri düzenli kullanıcı (MyUserProfile
) ve bunu genişleten kişi (EmployeeUserProfile
). models.py
:Güncelleme sonrasında Profil modelini kaydetme: IntegrityError (yinelenen user_id anahtarı)
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)
...
Ben çalışanlar için bir profil güncelleme formunu uygulayan bir sorun var. Ben böylece formu (forms.py
) oluşturun:
from django.forms import ModelForm
from .models import EmployeeUserProfile
class EmployeeUserProfileForm(ModelForm):
class Meta:
model = EmployeeUserProfile
exclude = ['user', 'current']
Ama profilini güncelleyerek geldiğinde:
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))
ben bir IntegrityError
olsun halihazırda oluşturulmuş profil güncellemek için 'Gönder'. Örneğin, (1062, "Duplicate entry '2' for key 'user_id'")
. Görünüşe göre Django, mevcut olanı güncellemek yerine kullanıcının bir kopyasını eklemeye çalışıyor.
Neyi yanlış yapıyorum?
Doh! Şimdi aptalım. Teşekkür ederim-- bu yanlıştı. (Ben login_required' var). – xnx
Sevindim yardımcı oldu .. Öğrenme deneyiminin bir parçası :) – karthikr