如何更新一对一关系模型?

时间:2017-04-23 04:36:54

标签: python django

我有一个与用户有一对一关系的模型。我创建了一个创建模型的表单,但是如果再次提交该表单,则会给出" 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']

1 个答案:

答案 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"),