Python django.db.utils.IntegrityError:唯一约束失败:模式\设置。用户\ id
我是Javascript新手,目前正在学习调试控制台中接收到的错误 在我的项目中,我为每个登录网站的用户添加了一个主题选择选项。当前,当我单击按钮时,它显示了2个主题,但它没有为每个用户保存主题 我已经在Django项目中创建了一个应用程序,除了在控制台中每次从按钮中选择主题时都会收到错误外,所有内容都与我下面的教程中介绍的内容相同:Python django.db.utils.IntegrityError:唯一约束失败:模式\设置。用户\ id,python,django,Python,Django,我是Javascript新手,目前正在学习调试控制台中接收到的错误 在我的项目中,我为每个登录网站的用户添加了一个主题选择选项。当前,当我单击按钮时,它显示了2个主题,但它没有为每个用户保存主题 我已经在Django项目中创建了一个应用程序,除了在控制台中每次从按钮中选择主题时都会收到错误外,所有内容都与我下面的教程中介绍的内容相同: (index):573 POST http://127.0.0.1:8000/update_theme/ 500 (Internal Server Error)
(index):573 POST http://127.0.0.1:8000/update_theme/ 500 (Internal Server Error)
并且在终端中出现此错误:
<link id="mystylesheet" href="{% static 'css/app-light.css' %}" type="text/css" rel="stylesheet">
<!-- Mode -->
<div id="mode" class="section" style="padding-top: 1rem; padding-bottom: 3rem;text-align: right">
<button onclick="swapStyles('app-light.css')" type="button" class="btn btn-secondary">Light Mode</button>
<button onclick="swapStyles('app-dark.css')" type="button" class="btn btn-dark">Dark Mode</button>
</div>
<!-- Mode -->
django.db.utils.IntegrityError:唯一约束失败:模式设置。用户id
这是基本模板:
<link id="mystylesheet" href="{% static 'css/app-light.css' %}" type="text/css" rel="stylesheet">
<!-- Mode -->
<div id="mode" class="section" style="padding-top: 1rem; padding-bottom: 3rem;text-align: right">
<button onclick="swapStyles('app-light.css')" type="button" class="btn btn-secondary">Light Mode</button>
<button onclick="swapStyles('app-dark.css')" type="button" class="btn btn-dark">Dark Mode</button>
</div>
<!-- Mode -->
这是视图。py
def userSettings(request):
user = request.user
setting = getattr(user, 'setting', None)
if setting:
seralizer = UserSerailizer(setting, many=False)
return JsonResponse(seralizer.data, safe=False)
else:
return JsonResponse({'message': "User don't have a setting."}, safe=False)
def updateTheme(request):
data = json.loads(request.body)
theme = data['theme']
user=request.user
setting = Setting.objects.get_or_create(user=user, value=theme, name=user.username)
setting.save()
print('Request:', theme)
return JsonResponse('Updated..', safe=False)
app_name = 'mode'
urlpatterns = [
path('user_settings/', views.userSettings, name="user_settings"),
path('update_theme/', views.updateTheme, name="update_theme"),
]
from .models import *
class UserSerailizer(serializers.ModelSerializer):
class Meta:
model = Setting
fields = '__all__'
url.py
def userSettings(request):
user = request.user
setting = getattr(user, 'setting', None)
if setting:
seralizer = UserSerailizer(setting, many=False)
return JsonResponse(seralizer.data, safe=False)
else:
return JsonResponse({'message': "User don't have a setting."}, safe=False)
def updateTheme(request):
data = json.loads(request.body)
theme = data['theme']
user=request.user
setting = Setting.objects.get_or_create(user=user, value=theme, name=user.username)
setting.save()
print('Request:', theme)
return JsonResponse('Updated..', safe=False)
app_name = 'mode'
urlpatterns = [
path('user_settings/', views.userSettings, name="user_settings"),
path('update_theme/', views.updateTheme, name="update_theme"),
]
from .models import *
class UserSerailizer(serializers.ModelSerializer):
class Meta:
model = Setting
fields = '__all__'
序列化程序.py
def userSettings(request):
user = request.user
setting = getattr(user, 'setting', None)
if setting:
seralizer = UserSerailizer(setting, many=False)
return JsonResponse(seralizer.data, safe=False)
else:
return JsonResponse({'message': "User don't have a setting."}, safe=False)
def updateTheme(request):
data = json.loads(request.body)
theme = data['theme']
user=request.user
setting = Setting.objects.get_or_create(user=user, value=theme, name=user.username)
setting.save()
print('Request:', theme)
return JsonResponse('Updated..', safe=False)
app_name = 'mode'
urlpatterns = [
path('user_settings/', views.userSettings, name="user_settings"),
path('update_theme/', views.updateTheme, name="update_theme"),
]
from .models import *
class UserSerailizer(serializers.ModelSerializer):
class Meta:
model = Setting
fields = '__all__'
我的问题我收到此错误的原因以及如何修复它?您使用的是错误的,因为您按所有字段进行筛选,并且在数据库中找不到已存在的实例,这将导致get\u或\u create尝试创建另一个实例
因此,您应该将只需要更新为默认值的字段移动到文档中
setting = Setting.objects.get_or_create(user=user, defaults={'value': theme, 'name'= user.username)
另外
- 将
存储为字段是数据重复,这毫无意义user.username
- 在
之后调用get\u或\u create
是不必要的,因为您可以使用setting.save()
update\u或\u create
的看法,但现在当我刷新页面时,它返回到light主题,尽管它保存为app dark.css
在控制台中,我收到数据:{消息:“用户没有设置。”}消息:“用户没有设置。”__proto__:Object
如果您有更多问题要问新问题,则这似乎与问题中描述的问题无关