Ограничение 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},
)
Вернуться на верх