Ограничение FOREIGN KEY не работает в django
Это мой 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
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},)
фактически я пытаюсь обновить данные из веб запроса. Я не использовал forms.py. Пожалуйста, подскажите мне, если я должен что-то изменить
Не следует искать связанный объект с pk
другого объекта. Измените это:
Euser.objects.filter(pk=current_user)
К этому:
Euser.objects.filter(user=current_user)
Ваша функция хотела создать новую Euser
, но вы не предоставили User
и ее id
процессу создания. Добавьте 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},
)