繁体   English   中英

Django 2.1.7,IntegrityError,FOREIGN KEY约束失败

[英]Django 2.1.7, IntegrityError, FOREIGN KEY constraint failed

我在User和Post模型之间的ForeignKey关系有问题。 或者,当为自定义用户模型创建ForeignKey时,出现错误:

追溯:

File "C:\Users\jack_\.virtualenvs\SNDProject-v81rGQ8f\lib\site-packages\django\db\backends\base\base.py" in _commit
  239.                 return self.connection.commit()

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

File "C:\Users\jack_\.virtualenvs\SNDProject-v81rGQ8f\lib\site-packages\django\core\handlers\exception.py" in inner
  34.             response = get_response(request)

File "C:\Users\jack_\.virtualenvs\SNDProject-v81rGQ8f\lib\site-packages\django\core\handlers\base.py" in _get_response
  126.                 response = self.process_exception_by_middleware(e, request)

File "C:\Users\jack_\.virtualenvs\SNDProject-v81rGQ8f\lib\site-packages\django\core\handlers\base.py" in _get_response
  124.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Users\jack_\.virtualenvs\SNDProject-v81rGQ8f\lib\site-packages\django\contrib\admin\options.py" in wrapper
  604.                 return self.admin_site.admin_view(view)(*args, **kwargs)

File "C:\Users\jack_\.virtualenvs\SNDProject-v81rGQ8f\lib\site-packages\django\utils\decorators.py" in _wrapped_view
  142.                     response = view_func(request, *args, **kwargs)

File "C:\Users\jack_\.virtualenvs\SNDProject-v81rGQ8f\lib\site-packages\django\views\decorators\cache.py" in _wrapped_view_func
  44.         response = view_func(request, *args, **kwargs)

File "C:\Users\jack_\.virtualenvs\SNDProject-v81rGQ8f\lib\site-packages\django\contrib\admin\sites.py" in inner
  223.             return view(request, *args, **kwargs)

File "C:\Users\jack_\.virtualenvs\SNDProject-v81rGQ8f\lib\site-packages\django\contrib\admin\options.py" in add_view
  1637.         return self.changeform_view(request, None, form_url, extra_context)

File "C:\Users\jack_\.virtualenvs\SNDProject-v81rGQ8f\lib\site-packages\django\utils\decorators.py" in _wrapper
  45.         return bound_method(*args, **kwargs)

File "C:\Users\jack_\.virtualenvs\SNDProject-v81rGQ8f\lib\site-packages\django\utils\decorators.py" in _wrapped_view
  142.                     response = view_func(request, *args, **kwargs)

File "C:\Users\jack_\.virtualenvs\SNDProject-v81rGQ8f\lib\site-packages\django\contrib\admin\options.py" in changeform_view
  1525.             return self._changeform_view(request, object_id, form_url, extra_context)

File "C:\Users\jack_\.virtualenvs\SNDProject-v81rGQ8f\lib\site-packages\django\db\transaction.py" in __exit__
  212.                         connection.commit()

File "C:\Users\jack_\.virtualenvs\SNDProject-v81rGQ8f\lib\site-packages\django\db\backends\base\base.py" in commit
  261.         self._commit()

File "C:\Users\jack_\.virtualenvs\SNDProject-v81rGQ8f\lib\site-packages\django\db\backends\base\base.py" in _commit
  239.                 return self.connection.commit()

File "C:\Users\jack_\.virtualenvs\SNDProject-v81rGQ8f\lib\site-packages\django\db\utils.py" in __exit__
  89.                 raise dj_exc_value.with_traceback(traceback) from exc_value

File "C:\Users\jack_\.virtualenvs\SNDProject-v81rGQ8f\lib\site-packages\django\db\backends\base\base.py" in _commit
  239.                 return self.connection.commit()

Exception Type: IntegrityError at /admin/auth_pp/posts/add/
Exception Value: FOREIGN KEY constraint failed

错误页面: https//i.stack.imgur.com/0pyRq.png

#CustomUserModel
class Usr(AbstractBaseUser):
    username = models.CharField(max_length=30, validators=[
    RegexValidator(
            regex=USERNAME_REGEX,
            message='Username must be alphanumeric or numbers',
            code='invalid_username'
        )
    ], unique=True)

    objects = UsrManager()

    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)
    is_superuser = models.BooleanField(default=False)


    def has_perm(self, perm, obj=None):
    # Simplest possible answer: Yes, always
    return True

    def has_module_perms(self, app_label):  
    # Simplest possible answer: Yes, always
    return True

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = []

#Model with ForeignKey 
class Posts(models.Model):
    title = models.CharField(max_length=50, unique=True)
    text = models.CharField(max_length=300)
    author = models.OneToOneField(get_user_model() ... default=1, swappable=True, related_query_name='post', db_constraint=True,      related_name='posts', on_delete=models.CASCADE)

对于可能存在的代码缺陷和语法错误,我深表歉意。 先感谢您!

编辑:仅在管理员中发生错误,在外壳中工作

OneToOneField表示一个用户只有一个帖子,而一个帖子只有一个用户,这增加了唯一性约束。 您需要使用外键(是的,您不使用它)

author = models.ForeignKey(...)

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM