简体   繁体   English

当我尝试删除帖子时,不断收到“ IntegrityError FOREIGN KEY约束失败”

[英]Keep getting “IntegrityError FOREIGN KEY constraint failed” when i am trying to delete a post

Every time i try to delete a post i keeping getting this error, but my delete button use to work before. 每次尝试删除帖子时,我都会不断收到此错误,但是删除按钮以前曾起作用。 I think it has something to do with the on_delete attribute but i changed its value a few times and it still did not work. 我认为它与on_delete属性有关,但我几次更改了它的值,但仍然无法正常工作。

//models.py //models.py

from django.db import models
from django.conf import settings
from django.urls import reverse


User = settings.AUTH_USER_MODEL

class PostManager(models.Manager):
    def search(self, query):
        qs = self.get_queryset().filter(title__icontains=query)
        if qs:
            return qs
        return None

    def get_by_id(self, id):
        qs = self.get_queryset().filter(id=id)
        if qs.count() == 1:
            return qs.first()
        else:
            return None     


# Create your models here.
class PostModel(models.Model):
    user = models.ForeignKey(User, default=1, on_delete=models.CASCADE)
    title = models.CharField(max_length=50)
    message = models.TextField()
    date = models.DateTimeField(auto_now_add=True)
    likes = models.ManyToManyField(User, blank=True, related_name='post_likes')


    def __str__(self):
        return self.title

    objects = PostManager()

    def get_total_likes(self):
        return self.likes.count()   

    def get_absolute_url(self):
        return reverse("birdpost:detail", kwargs={"id": self.id})

    def get_like_url(self):
        return reverse("birdpost:like-toggle", kwargs={"id": self.id})

    def get_delete_url(self):
        return reverse("birdpost:delete_post", kwargs={"id": self.id})

//views.py //views.py

def del_post(request, id):
    obj = get_object_or_404(PostModel, id=id)
    if request.user != obj.user:
        print("Ooh no looks like this post is not yours... ")
    else:
        obj.delete()

    return redirect("home")

Environment: 环境:

Request Method: GET Request URL: http://localhost:8000/post/4/delete 请求方法:GET请求网址: http:// localhost:8000 / post / 4 / delete

Django Version: 2.2.1 Python Version: 3.6.8 Installed Applications: Django版本:2.2.1 Python版本:3.6.8安装的应用程序:

['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'accounts',
 'birdpost',
 'search']

Installed Middleware: 已安装的中间件:

['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']

Traceback: 追溯:

File "/home/grey/Desktop/python/birds/virtualenv/lib/python3.6/site-packages/django/db/backends/base/base.py" in _commit
  240.                 return self.connection.commit()

The above exception (FOREIGN KEY constraint failed) was the direct cause of the following exception:

File "/home/grey/Desktop/python/birds/virtualenv/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/home/grey/Desktop/python/birds/virtualenv/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  115.                 response = self.process_exception_by_middleware(e, request)

File "/home/grey/Desktop/python/birds/virtualenv/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  113.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/home/grey/Desktop/python/birds/src/birdpost/views.py" in del_post
  104.      obj.delete()

File "/home/grey/Desktop/python/birds/virtualenv/lib/python3.6/site-packages/django/db/models/base.py" in delete
  919.         return collector.delete()

File "/home/grey/Desktop/python/birds/virtualenv/lib/python3.6/site-packages/django/db/models/deletion.py" in delete
  318.                             sender=model, instance=obj, using=self.using

File "/home/grey/Desktop/python/birds/virtualenv/lib/python3.6/site-packages/django/db/transaction.py" in __exit__
  240.                         connection.commit()

File "/home/grey/Desktop/python/birds/virtualenv/lib/python3.6/site-packages/django/db/backends/base/base.py" in commit
  262.         self._commit()

File "/home/grey/Desktop/python/birds/virtualenv/lib/python3.6/site-packages/django/db/backends/base/base.py" in _commit
  240.                 return self.connection.commit()

File "/home/grey/Desktop/python/birds/virtualenv/lib/python3.6/site-packages/django/db/utils.py" in __exit__
  89.                 raise dj_exc_value.with_traceback(traceback) from exc_value

File "/home/grey/Desktop/python/birds/virtualenv/lib/python3.6/site-packages/django/db/backends/base/base.py" in _commit
  240.                 return self.connection.commit()

Exception Type: IntegrityError at /post/4/delete
Exception Value: FOREIGN KEY constraint failed

Try removing the default=1. 尝试删除默认值= 1。 I don't know if setting a default value without a choice field is the way to go. 我不知道是否要在没有选择字段的情况下设置默认值。

I removed the default=1 like @Na'aman Hirschfeld said, and deleted all of my migrations and my database. 我像@ Na'aman Hirschfeld所说的那样删除了default = 1,并删除了所有迁移和数据库。 And now it's working fine. 现在一切正常。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 IntegrityError:外键约束失败 - IntegrityError: FOREIGN KEY constraint failed FOREIGN KEY 约束失败,为什么会出现此错误? - FOREIGN KEY constraint failed, why am I getting this error? 当 FOREIGN KEY 约束失败时,如何修复 /admin/orders/order/add/ 处的“IntegrityError”? - how can I fix a 'IntegrityError at /admin/orders/order/add/' when FOREIGN KEY constraint failed? 在 Django 中不断收到“外键约束失败” - Keep getting “FOREIGN KEY constraint failed” in Django 尝试使用 FastAPI/SQLite 进行 POST 时获取 (sqlite3.IntegrityError) NOT NULL 约束失败 - Getting (sqlite3.IntegrityError) NOT NULL constraint failed when trying to POST using FastAPI/ SQLite Django 2.1.7,IntegrityError,FOREIGN KEY约束失败 - Django 2.1.7, IntegrityError, FOREIGN KEY constraint failed 为什么我收到IntegrityError:NOT NULL约束失败 - Why am I getting IntegrityError: NOT NULL constraint failed 我收到 django 的 IntegrityError UNIQUE 约束失败 - I am getting a IntegrityError UNIQUE constraint failed for django Django 3.0.3 IntegrityError FOREIGN KEY 约束在更改数据库时失败 - Django 3.0.3 IntegrityError FOREIGN KEY constraint failed when making changes to db django.db.utils.IntegrityError: FOREIGN KEY 约束失败 - django.db.utils.IntegrityError: FOREIGN KEY constraint failed
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM