[我正在尝试从Django数据库中删除用户,但在/ admin / auth / user /时发生了IntegrityError错误

问题描述 投票:0回答:1

我想从django随附的数据库中删除用户,我使用我的超级用户进入管理站点,但是当我尝试手动删除任何用户(出于测试目的而创建的用户时,它给出上述错误y,下面插入的回溯是日志中的回溯。

错误

Traceback (most recent call last):
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/db/backends/base/base.py", line 240, in _commit
    return self.connection.commit()
sqlite3.IntegrityError: FOREIGN KEY constraint failed

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/contrib/admin/options.py", line 606, in wrapper
    return self.admin_site.admin_view(view)(*args, **kwargs)
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/utils/decorators.py", line 142, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/contrib/admin/sites.py", line 223, in inner
    return view(request, *args, **kwargs)
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/utils/decorators.py", line 45, in _wrapper
    return bound_method(*args, **kwargs)
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/utils/decorators.py", line 142, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/contrib/admin/options.py", line 1727, in changelist_view
    response = self.response_action(request, queryset=cl.get_queryset(request))
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/contrib/admin/options.py", line 1397, in response_action
    response = func(self, request, queryset)
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/contrib/admin/actions.py", line 40, in delete_selected
    modeladmin.delete_queryset(request, queryset)
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/contrib/admin/options.py", line 1098, in delete_queryset
    queryset.delete()
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/db/models/query.py", line 711, in delete
    deleted, _rows_count = collector.delete()
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/db/models/deletion.py", line 318, in delete
    sender=model, instance=obj, using=self.using
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/db/transaction.py", line 240, in __exit__
    connection.commit()
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/db/backends/base/base.py", line 262, in commit
    self._commit()
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/db/backends/base/base.py", line 240, in _commit
    return self.connection.commit()
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/db/utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/Users/lralcocer/PycharmProjects/MediTracker/venv/lib/python3.5/site-packages/django/db/backends/base/base.py", line 240, in _commit
    return self.connection.commit()
django.db.utils.IntegrityError: FOREIGN KEY constraint failed
[06/May/2020 02:47:33] "POST /admin/auth/user/ HTTP/1.1" 500 142907

这些是我的模特

from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class UserRegister(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE)
    first_name = models.CharField(max_length=256, default='', blank=False,)
    last_name = models.CharField(max_length=256, default='', blank=False)
    email = models.EmailField(unique=True, blank=False,default='')
    def __str__(self):
        return self.user.username

这是我的表格

from django import forms
from .models import *
from django.contrib.auth.models import User

#Create your forms here!

class UserRegisterForm(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput())
    class Meta():
        model = User
        fields = ('username','password')

class UserRegisterInfoForm(forms.ModelForm):
    class Meta():
        model = UserRegister
        fields = ('first_name','last_name','email')

这是我的观点

def UserRegisterFormView(request):
        registered = False
        if request.method == 'POST':
            userform = UserRegisterForm(data=request.POST)
            userinfoform = UserRegisterInfoForm(data=request.POST)
            if userform.is_valid() and userinfoform.is_valid():
                user = userform.save()
                user.set_password(user.password)
                user.save()

                profile = userinfoform.save(commit=False)
                profile.user = user
                profile.save()

                registered = True
            else:
                print(userform.errors, userinfoform.errors)
        else:
            userform = UserRegisterForm
            userinfoform = UserRegisterInfoForm
        return render(request,'register/register.html'{'userform':userform,'userinfoform':userinfoform,'registered':registered})
django
1个回答
0
投票

您可以删除除init.py文件之外的数据库。然后运行makemigrations并再次迁移命令。

如果无法解决,请将该文件夹中的所有文件复制到另一个文件夹,删除该文件夹,在您的项目目录中创建一个新文件夹,然后将所有内容粘贴回(请注意urls.py,不要别忘了更改它们)。然后运行makemigrations并迁移命令。

© www.soinside.com 2019 - 2024. All rights reserved.