问题描述
我当前的应用程序是多租户的,所以我按用户管理一个模式,我的应用程序中有很多部分用户可以添加评论,所以我决定使用通用模型,如下所示:
class Comment(models.Model):
date = models.DateTimeField(
_('Date'),blank=False,auto_Now=True,db_index=False
)
comment = models.TextField(
_('Comment'),null=False
)
user = models.ForeignKey(
'security.User',related_name='comments',verbose_name=_('User'),on_delete=models.CASCADE,)
content_type = models.ForeignKey(ContentType,on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey()
它适用于单个用户/模式,它可以正确保存评论,但是当我使用其他用户登录并尝试保存评论时,会出现下一个错误:
Traceback (most recent call last):
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/django/db/backends/utils.py",line 87,in _execute
return self.cursor.execute(sql,params)
psycopg2.IntegrityError: insert or update on table "generic_comment" violates foreign key constraint "generic_comment_content_type_id_068f197c_fk_django_co"
DETAIL: Key (content_type_id)=(2) is not present in table "django_content_type".
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/django/core/handlers/exception.py",line 34,in inner
response = get_response(request)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/django/core/handlers/base.py",line 115,in _get_response
response = self.process_exception_by_middleware(e,request)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/django/core/handlers/base.py",line 113,in _get_response
response = wrapped_callback(request,*callback_args,**callback_kwargs)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/django/views/decorators/csrf.py",line 54,in wrapped_view
return view_func(*args,**kwargs)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/rest_framework/viewsets.py",line 116,in view
return self.dispatch(request,*args,**kwargs)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/rest_framework/views.py",line 495,in dispatch
response = self.handle_exception(exc)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/rest_framework/views.py",line 455,in handle_exception
self.raise_uncaught_exception(exc)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/rest_framework/views.py",line 492,in dispatch
response = handler(request,**kwargs)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/rest_framework/mixins.py",line 21,in create
self.perform_create(serializer)
File "/home/jsalvad0r/Documents/dev/tuequipovirtual/my_app-backend/my_app/security/api/views_project.py",line 159,in perform_create
comment = serializer.save()
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/rest_framework/serializers.py",line 214,in save
self.instance = self.create(validated_data)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/rest_framework/serializers.py",line 943,in create
instance = ModelClass._default_manager.create(**validated_data)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/django/db/models/manager.py",line 82,in manager_method
return getattr(self.get_queryset(),name)(*args,**kwargs)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/django/db/models/query.py",line 422,in create
obj.save(force_insert=True,using=self.db)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/django/db/models/base.py",line 741,in save
force_update=force_update,update_fields=update_fields)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/django/db/models/base.py",line 779,in save_base
force_update,using,update_fields,File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/django/db/models/base.py",line 870,in _save_table
result = self._do_insert(cls._base_manager,fields,update_pk,raw)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/django/db/models/base.py",line 908,in _do_insert
using=using,raw=raw)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/django/db/models/manager.py",line 1186,in _insert
return query.get_compiler(using=using).execute_sql(return_id)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/django/db/models/sql/compiler.py",line 1335,in execute_sql
cursor.execute(sql,params)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/django/db/backends/utils.py",line 102,in execute
return super().execute(sql,line 67,in execute
return self._execute_with_wrappers(sql,params,many=False,executor=self._execute)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/django/db/backends/utils.py",line 76,in _execute_with_wrappers
return executor(sql,many,context)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/django/db/backends/utils.py",params)
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/django/db/utils.py",line 89,in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/home/jsalvad0r/.pyenv/versions/my_app/lib/python3.6/site-packages/django/db/backends/utils.py",params)
django.db.utils.IntegrityError: insert or update on table "generic_comment" violates foreign key constraint "generic_comment_content_type_id_068f197c_fk_django_co"
DETAIL: Key (content_type_id)=(2) is not present in table "django_content_type".
当我重新启动服务器时,不再向我抛出错误,怎么可能会采用上一个会话的 content_type_id
?我在谷歌上搜索服务器是否在数据库层管理某种缓存,但我没有找到任何东西。有人可以帮忙吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)