Я пытаюсь удалить пользователя из базы данных django, но возникает ошибка IntegrityError в / admin / auth / user / error - PullRequest
0 голосов
/ 06 мая 2020

Я хочу удалить пользователя из базы данных, с которой поставляется 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})

1 Ответ

0 голосов
/ 06 мая 2020

Вы можете удалить базу данных, кроме файла init.py . Затем запустите makemigrations и снова перенесите команды.

Если это не исправит, то скопируйте все файлы в этой папке в другую папку, удалите эту папку, создайте новую в каталоге вашего проекта, затем вставьте все обратно (будьте осторожны со своим urls.py, не забудьте их изменить). Затем запустите команды makemigrations и migrate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...