Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x /admin/auth/user/11/delete/FOREIGN KEY约束处的IntegrityError失败_Python 3.x_Django_Django Models_Django Forms_Django Views - Fatal编程技术网

Python 3.x /admin/auth/user/11/delete/FOREIGN KEY约束处的IntegrityError失败

Python 3.x /admin/auth/user/11/delete/FOREIGN KEY约束处的IntegrityError失败,python-3.x,django,django-models,django-forms,django-views,Python 3.x,Django,Django Models,Django Forms,Django Views,当我从我的管理面板中删除用户时,它会显示给定的错误,我不知道这个错误的原因是什么,或者我在哪里出错。我可以更新和创建新用户,并删除那些没有配置文件的用户,但由于以下原因无法删除这些用户的配置文件。 accounts/models.py from django.urls import reverse from django.db import models from django.contrib import auth from PIL import Image from django.db.m

当我从我的管理面板中删除用户时,它会显示给定的错误,我不知道这个错误的原因是什么,或者我在哪里出错。我可以更新和创建新用户,并删除那些没有配置文件的用户,但由于以下原因无法删除这些用户的配置文件。

accounts/models.py

from django.urls import reverse
from django.db import models
from django.contrib import auth
from PIL import Image
from django.db.models.signals import post_save
from django.dispatch import receiver

# Create your models here.

class User(auth.models.User,auth.models.PermissionsMixin):
    
    def __str__(self):
        return "@{}".format(self.username)

class Profile(models.Model):

        user = models.OneToOneField(auth.models.User, on_delete=models.CASCADE)
        avatar = models.ImageField(default='1.jpg', upload_to='displays', height_field=None, width_field=None, max_length=None)
    
    
        def __str__(self):
            return f'{self.user.username} Profile'
    
    def save(self,*args, **kwargs):
        super(Profile,self).save(*args, **kwargs) #it will take data and save it

        dp = Image.open(self.avatar.path) #storing avatar in variable
        if dp.height >300 or dp.width >300:
            output_size =(300,300) #set any size you want
            dp.thumbnail(output_size) 
            dp.save(self.avatar.path) #after resizing it save it in data base in place of uploaded once by user
 

    def get_absolute_url(self):
        return reverse("Profile_detail", kwargs={"pk": self.pk})

@receiver(post_save, sender=User)
def create_profile(sender, created,instance,**kwargs):
    if created:
        Profile.objects.create(user=instance)

@receiver(post_save, sender=User)
def save_profile(sender, instance,**kwargs):
    instance.profile.save()
accounts/forms.py

    from django import forms
    from django.contrib.auth.forms import UserCreationForm
    from django.core.exceptions import ValidationError
    from django.core import validators
    
    User = get_user_model()
    
    class UserCreateForm(UserCreationForm):
    
        class Meta:
            fields = ["username","email","password1","password2"]
            model = get_user_model()
            widgets ={
                'username' : forms.TextInput(attrs={'class':'textinputclass','placeholder':'username'}),
            }
        
        def clean_email(self):
            email = self.cleaned_data["email"]
            if User.objects.filter(email__iexact=email).exists():
                raise forms.ValidationError("Email is invalid")
            return email
        
    
        def __init__(self,*args, **kwargs):
            super().__init__(*args, **kwargs)
            self.fields['username'].label = 'Display Name'
            # self.fields['email'].label = 'Email Address'
accounts/views.py

user = User
class SignUp(CreateView):
    form_class = forms.UserCreateForm
    
    def form_valid(self, form):
        if form.is_valid:
            email = form.cleaned_data.get('email')
            user = form.save(commit=False)
            user.is_active = False
            send_mail(
            'i gotch you',
            'how are uou',
            'coolahmed21@hgmail.com',
            [email],
            fail_silently=False,
            )
        return super(SignUp, self).form_valid(form)
    success_url = reverse_lazy('login')
    template_name = "accounts/signup.html"

这是由于on_delete=级联。这意味着如果ForeignKey引用的对象被删除,那么它也应该删除引用的对象。这样的级联会导致大量对象被删除,因为对象的删除实际上会触发其他删除,以此类推

试试这个:

class Profile(models.Model):
    user = models.OneToOneField(auth.models.User, null=True on_delete=models.SET_NULL)

这是由于on_delete=级联。这意味着如果ForeignKey引用的对象被删除,那么它也应该删除引用的对象。这样的级联会导致大量对象被删除,因为对象的删除实际上会触发其他删除,以此类推

试试这个:

class Profile(models.Model):
    user = models.OneToOneField(auth.models.User, null=True on_delete=models.SET_NULL)