我有一个与用户有一对一关系的模型。我创建了一个创建模型的表单,但是如果再次提交该表单,则会给出" UNIQUE约束失败"。我如何才能使数据更新而不是尝试创建新数据?
models.py
if (y < SIZE) {
g.fillRect(x, y, SIZE, DIST);
foregroundRec(x, y + DIST, c + 1, g);
}
forms.py
class Userprofile (models.Model):
user = models.OneToOneField(User, related_name='profile', primary_key=True,)
address = models.CharField(max_length=100)
zip = models.CharField(max_length=100)
views.py
class Profile(forms.ModelForm):
class Meta:
model = Userprofile
fields = ['address', 'zip']
答案 0 :(得分:0)
您收到此错误UNIQUE constraint failed
,因为您正在尝试再次创建一个已存在于Userprofile表中的新用户OneToOne Field将始终检查该用户在表Userprofile.
因此,如果您想更新个人资料。你的观点应该是这样的:
views.py
from django.shortcuts import get_object_or_404
def changeprofile(request):
profile_instance = get_object_or_404(Userprofile, user=request.user)
form = Profile(request.POST or None, request.FILES or None, instance=profile_instance)
if form.is_valid():
profile = form.save(commit=False)
profile.save()
return render(request, 'myaccount.html', {"Profile":form})
urls.py
url(r'^update-profile/$', views.changeprofile, name="changeprofile"),