python - Django: django.db.utils.OperationalError: no such table: #deprecated_bug_assignee 何时使用“POST”方法,但“GET”方法可以
问题描述
GET 方法可以响应数据,使用“POST”方法时发生错误,错误是:
Django: django.db.utils.OperationalError: no such table: #deprecated_bug_assignee when to use “POST” method, but “GET” method is ok
为什么?他们使用的是同一张桌子!
视图.py
from django.http import Http404
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
class DeprecatedBugAssigneeList(APIView):
"""
列出所有的snippets或者创建一个新的snippet。
"""
def get(self, request, format=None):
dbsa = DeprecatedBugAssignee.objects.using('slave').all()
serializer = DeprecatedBugAssigneeSerializer(dbsa, many=True)
return Response(serializer.data)
def post(self, request, format=None):
serializer = DeprecatedBugAssigneeSerializer(data=request.data)
if serializer.is_valid():
bug_serializer = serializer.save()
bug_info = DeprecatedBugAssignee.objects.filter(bugid__exact=request.data['bugid'])
bug_serializer.add(*bug_info)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
序列化程序.py
from apps.cn_relnotes.models import DeprecatedBugAssignee, DeprecatedBugCode
class DeprecatedBugAssigneeSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = DeprecatedBugAssignee
fields = ('bugid', 'oassignee', 'nassignee', 'opdatime', 'operatornm', 'state', 'duration')
模型.py
from django.db import models
class DeprecatedBugAssignee(models.Model):
bugid = models.IntegerField()
oassignee = models.CharField(max_length=255)
nassignee = models.CharField(max_length=255)
opdatime = models.DateTimeField()
operatornm = models.CharField(max_length=255)
state = models.CharField(max_length=64, blank=True, null=True)
duration = models.FloatField(blank=True, null=True)
class Meta:
managed = False
db_table = '#deprecated_bug_assignee'
unique_together = (('bugid', 'opdatime'),)
网址.py
from django.conf.urls import url
from rest_framework.urlpatterns import format_suffix_patterns
from apps.cn_relnotes import views
urlpatterns = [
url(r'^v1/bug/$', views.DeprecatedBugAssigneeList.as_view())
]
urlpatterns = format_suffix_patterns(urlpatterns)
解决方案
设置.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
'slave': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db2.sqlite3'),
},
}
DATABASE_ROUTERS = ['relnotes.database_router.DatabaseAppsRouter']
DATABASE_APPS_MAPPING = {
'project': 'default',
'app': 'slave'
}
推荐阅读
- javascript - 如何从JS中的数组中删除特定元素
- php - PHP 会话:$_SESSION 在 Mac 上本地运行时为空
- directed-acyclic-graphs - How can I encode a rule tree of multiple depths in Dhall?
- c# - 通过 id 获取时,EF Core 和 Automapper 未获取所有数据
- r - 计算 R 中每组的平均、最大、最小观察数
- html - 将 DIV 插入父 DIV 时排序错误
- python - 如何使用烧瓶显示多个文件
- android - 蓝牙耳机按钮上的自定义操作
- c# - 按照 Microsoft 教程构建 POST 请求但不起作用
- c - 在“select.h”中找不到“FD_SET”函数声明