[英]FOREIGN KEY constraint failed in django
This is my models.py这是我的models.py
from ast import Delete
from email.policy import default
from django.db import models
from django.contrib.auth.models import User
class Euser(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
phone = models.CharField(max_length=10,null=True)
birthdate = models.DateField(null=True,)
profile_pic = models.ImageField(null=True, )
cover_pic = models.ImageField( null=True, upload_to="images/%y")
def __str__(self):
return self.phone
views.py视图.py
def editprofile(request, pk):
return render(request, 'proedit.html')
def submitedit(request):
if request.method=="POST":
current_user = request.user.id
firstname = request.POST.get('firstname')
lastname = request.POST.get('lastname')
username = request.POST.get('username')
email = request.POST.get('email')
phone = request.POST.get('mobileno')
birthdate = request.POST.get('birthdate')
profile_pic = request.FILES['profile_pic']
print(current_user)
User.objects.filter(pk=current_user).update(username=username,first_name=firstname,last_name=lastname,email=email)
Euser.objects.filter(pk=current_user).update_or_create(
phone=phone,birthdate=birthdate,profile_pic=profile_pic,
defaults={'phone': phone,'birthdate': birthdate,'profile_pic': profile_pic},)
I am trying to update the data from web request.我正在尝试更新来自 web 请求的数据。 i haven't used forms.py.
我没有使用过 forms.py。 Do i have to change something?
我必须改变什么吗?
You should not search related object with pk
of other object.您不应使用其他 object 的
pk
搜索相关的 object。 Change this:改变这个:
Euser.objects.filter(pk=current_user)
To that:对此:
Euser.objects.filter(user=current_user)
Your function wanted to create new Euser
, but you didn't provide User
nor its id
to the creation process.您的 function 想要创建新的
Euser
,但您没有在创建过程中提供User
或其id
。 Add user=current_user
to update_or_create
:将
user=current_user
添加到update_or_create
:
Euser.objects.filter(pk=current_user).update_or_create(
phone=phone, birthdate=birthdate, profile_pic=profile_pic, user=current_user,
defaults={'phone': phone, 'birthdate': birthdate, 'profile_pic': profile_pic},
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.